К сожалению, я только что натолкнулся на ваш вопрос, поэтому ответ может показаться немного запоздалым, но, тем не менее, я его публикую.
Вы определенно можете преобразовать смещение времени в имя часового пояса.В основном это выполняется следующей строкой кода:
$zoneName = timezone_name_from_abbr('', $offset*3600);
, где $offset
- смещение по времени в часах.Этот упрощенный метод может не работать при определенных условиях из-за некоторых известных ошибок / функций в PHP, поэтому существует расширенная оболочка с обходным путем, которую можно найти на сайте php.net .Помимо прочего, оболочка также поддерживает флаг перехода на летнее время.
Действительно, как отметил @zerkms в своем ответе, между смещением времени и именем часового пояса нет однозначного отношения, поскольку обычно несколько часовых поясовразделить то же смещение. Эта функция возвращает первый найденный часовой пояс, соответствующий данному смещению.Какой именно идет первым, не предопределено.
Но в любом случае, эта функция очень удобна для установки предпочтительного часового пояса для сеанса пользователя через date_default_timezone_set
, который принимает только идентификатор часового пояса, но пользователь можетбыть представлен со смещением времени в веб-интерфейсе.Нам не важно, какой идентификатор используется (за кулисами), если мы знаем, что смещение времени является правильным.