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