2009-12-17 3 views
1

У меня есть приложение, которое хранит данные по времени по времени в MySQL db следующим образом: 2009-12-16 15:27:47.PHP Echo Часовой пояс на основе смещения по часовой стрелке

часовой пояс Абонентская смещение хранится в другом столбце, как это: -6

выше часовой пояс: GMT-6, который является ДКБ. Есть ли способ, которым я могу эхо CST (т.е. - дата ('T ")) из данных смещения по GMT?

Примечание. Следует также добавить, что глобальный часовой пояс приложения задается с помощью: date_default_timezone_set (' GMT ');

ответ

2

К сожалению, для каждого смещения 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. Это может вызвать проблемы для подмножества ваших пользователей, но это позволяет им изменять свой часовой пояс, если это необходимо.

+0

Хорошо, спасибо за информацию. – Josh

Смежные вопросы