PHP – преобразовать строковый формат часового пояса в целое число смещения

StackOverflow https://stackoverflow.com//questions/25086456

Вопрос

Довольно просто:

PHP возвращает часовые пояса в следующем формате:

"America/Los_Angeles"

Я хочу преобразовать его в:

-7

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

Это было полезно?

Решение

$dateTimeZone = new DateTimeZone("America/Los_Angeles");
$date = new DateTime(null, $dateTimeZone);
echo $dateTimeZone->getOffset($date)/60/60;

Демо

Другие советы

PHP использует стандартные часовые пояса из база данных часовых поясов IANA.

«Америка/Лос-Анджелес» — это нет то же, что -7.-7 — это «смещение часового пояса», а не «часовой пояс».Прочтите «Часовой пояс != Смещение» в вики-тег часового пояса.

Считают, что "America/Los_Angeles" представляет собой тихоокеанское время США, которое составляет всего -7 во время тихоокеанского летнего времени (PDT).В остальное время года используется тихоокеанское стандартное время (PST), которое равно -8.

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

Кроме того, вы должны понимать, что, хотя вы можете определить смещение для определенного часового пояса в любой конкретный момент, обратное неверно.Ты не могу воспринимайте -7 как часовой пояс и ожидайте, что кто-нибудь сможет определить, что сейчас тихоокеанское летнее время.Учтите, что -7 также относится к горному поясному времени, которое в Аризоне используется круглый год.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top