Я читал эту тему за последние несколько часов, и я думаю, что у меня есть ручка, но я хотел бы получить подтверждение.Лучший способ обработки хранения/отображения дат в разных часовых поясах в PHP?
Ситуация
Я хочу, чтобы пользователь, скажем, в Калифорнии, чтобы иметь возможность оставить комментарий, который будет храниться в MySQL. Затем я хочу, чтобы пользователь, скажем, в Техасе, мог просмотреть комментарий с датой, настроенной на его часовой пояс.
Предлагаемое решение
Хранение
- Выполните следующую в начале приложения, так что все функции даты использовать UTC часовой пояс:
date_default_timezone_set('UTC');
$Date = new DateTime();
, чтобы получить объект DateTime с текущую дату и время в UTC.- Используйте значение
$Date->format()
, чтобы получить значение для ввода в столбце типа даты в MySQL.
Показано
- Получить информацию часовой пояс пользователя из JavaScript и сохранить его в куки.
- Запустите запрос MySQL SELECT, чтобы получить значение столбца datetime.
$Date = new DateTime($row['time']);
для создания объекта DateTime с сохраненным временем UTC.$Date->setTimezone(new DateTimeZone($userTimezone));
, чтобы настроить время UTC на часовой пояс пользователя.- Отображать
$Date->format();
Это суть того, что должно быть сделано? Не хватает ли лучшего решения? Спасибо за вашу помощь!
Я думаю, что я собираюсь установить cookie часового пояса при входе в систему, поэтому он должен обновиться, если вы отправитесь в Австралию и войдите туда. Вы предлагаете, чтобы какой-то JavaScript работал на загрузке страницы, который ищет время, скажем, и преобразует их все на лету? –
Единственный способ добраться до пользовательских часов - через JS или geo-ip. Последнее сложное и ненадежное. Если вы собираетесь использовать JS в любом случае, то для этого во время входа в систему требуется больше домашнего обслуживания (отслеживание на стороне сервера). Делать это на лету имеет больше смысла здесь. – aleemb
Спасибо. Поскольку я больше изучаю это, я начинаю с тобой соглашаться. –