К сожалению, для каждого смещения GMT не всегда существует один часовой пояс.На многих GMT смещениях есть несколько часовых поясов. Кроме того, сдвиги GMT изменяются во время DST (там, где это применимо). Например, во время DST, US/Arizona и US/Горы разделяют одно и то же смещение GMT, однако в течение оставшегося года US/Mountain
и US/Arizona
не используют одно и то же смещение GMT. Вы можете использовать DateTimeZone::listIdentifiers()
или check out the manual для списка поддерживаемых часовых поясов в PHP.
Если вы начали приложение с нуля, я бы предложил сохранить идентификатор часового пояса вместо смещения GMT, но я предполагаю, что ваше приложение уже готово. В этом случае нет надежного способа отображения часового пояса без улучшения ваших данных.
Я бы предложил добавить столбец timezone
к таблице. Вы можете написать одноразовый скрипт, который установил бы timezone
в некоторый заранее определенный список значений по умолчанию на основе смещения GMT. Например, если GMT смещение равно 8, установите timezone
на America/Los_Angeles
. Наконец, измените ваше приложение на отображение/сохранение идентификаторов часовых поясов вместо смещений GMT. Это может вызвать проблемы для подмножества ваших пользователей, но это позволяет им изменять свой часовой пояс, если это необходимо.
Хорошо, спасибо за информацию. – Josh