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