PHP – преобразовать строковый формат часового пояса в целое число смещения
-
02-01-2020 - |
Вопрос
Довольно просто:
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 также относится к горному поясному времени, которое в Аризоне используется круглый год.