Преобразование смещения часового пояса в имя - PullRequest
6 голосов
/ 07 марта 2012

Я использую Javascript для хранения текущего часового пояса смещения пользователя по Гринвичу, и я хотел бы преобразовать его в Имя часового пояса PHP.

Если у меня есть смещение, скажем, «300» или «-200», как я могу преобразовать его в имя часового пояса php?

Спасибо!

Ответы [ 2 ]

6 голосов
/ 10 сентября 2013

К сожалению, я только что натолкнулся на ваш вопрос, поэтому ответ может показаться немного запоздалым, но, тем не менее, я его публикую.

Вы определенно можете преобразовать смещение времени в имя часового пояса.В основном это выполняется следующей строкой кода:

$zoneName = timezone_name_from_abbr('', $offset*3600);

, где $offset - смещение по времени в часах.Этот упрощенный метод может не работать при определенных условиях из-за некоторых известных ошибок / функций в PHP, поэтому существует расширенная оболочка с обходным путем, которую можно найти на сайте php.net .Помимо прочего, оболочка также поддерживает флаг перехода на летнее время.

Действительно, как отметил @zerkms в своем ответе, между смещением времени и именем часового пояса нет однозначного отношения, поскольку обычно несколько часовых поясовразделить то же смещение. Эта функция возвращает первый найденный часовой пояс, соответствующий данному смещению.Какой именно идет первым, не предопределено.

Но в любом случае, эта функция очень удобна для установки предпочтительного часового пояса для сеанса пользователя через date_default_timezone_set, который принимает только идентификатор часового пояса, но пользователь можетбыть представлен со смещением времени в веб-интерфейсе.Нам не важно, какой идентификатор используется (за кулисами), если мы знаем, что смещение времени является правильным.

2 голосов
/ 07 марта 2012

невозможно по определению.

Несколько часовых поясов могут иметь одинаковое смещение (и это также зависит от времени года)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...