Сохранение даты и времени в формате UTC и их преобразование в местное время в PHP / MySQL

Я хотел спросить, сработает ли это, прежде чем я приступил к полноценному рефакторингу того, как я обрабатываю дату и время.

Чтобы сформулировать мой вопрос, вот моя проблема ... Я храню «действия», предпринятые пользователем, в таблице истории. Эти действия имеют отметку времени. Пользователи могут быть со всего мира и, следовательно, иметь разные часовые пояса. Я хочу отобразить элементы в истории и показать отметки времени в местном часовом поясе.

Кроме того, я знаю, что могу использовать поля даты и времени и просто хранить форматы времени в формате UTC, но я предпочитаю использовать метку времени, чтобы установить текущее время по умолчанию.

Сработает ли это для моей проблемы?

  1. Часовой пояс моего сервера будет Лос-Анджелес.

  2. Хранить метки времени как метки времени в MySQL. Насколько я понимаю, метка времени всегда хранится в формате UTC. Записи будут храниться по умолчанию как creation_date ИЛИ я явно установлю UTC_TIMESTAMP (). Фактически, все записи в базе данных будут в формате UTC.

  3. Когда пользователь входит в систему, я получаю его часовой пояс (я сохраняю его в базе данных как пользовательскую настройку). В этом примере предположим, что этот человек находится в Нью-Йорке.

Вот где мой вопрос. Будет ли работать что-то из этого?

  1. a) Возьмите исторические данные. Все временные метки будут автоматически преобразованы из UTC во время Лос-Анджелеса. Для каждого элемента истории преобразуйте метку времени Лос-Анджелеса в метку времени Нью-Йорка и выполните эхо.

ИЛИ

  1. б) Установите часовой пояс php date_default_timezone_set на Нью-Йорк. Возьмите исторические данные. Все временные метки ВСЕ ЕЩЕ по времени в Лос-Анджелесе, сервером по-прежнему остается время Лос-Анджелеса. Для каждого элемента истории просто укажите метку времени, потому что date_default_timezone_set автоматически преобразует метку времени Лос-Анджелеса в Нью-Йорк.

Будет ли работать вариант 4b? Есть ли лучший способ перевести время Лос-Анджелеса на время Нью-Йорка?

Есть ли вообще лучший способ сделать это?

8
задан lxg 6 October 2014 в 21:22
поделиться