Имя часового пояса PHP для смещения

Как мне перейти на преобразование имени часового пояса ( "Азия/Дубай", "Европа/Андорра" и т.д.) в смещение по GMT в часах (или даже секундах, так как я могу преобразовать его оттуда).

Большинство людей спрашивают об обратном, но мне нужно получить смещение часового пояса от имени часового пояса, предоставленного GeoNames.

Ответы

Ответ 1

вы можете использовать следующие

<?php

$timezone = 'Pacific/Nauru';
$time = new \DateTime('now', new DateTimeZone($timezone));
$timezoneOffset = $time->format('P');
?>

Ответ 2

Другим вариантом будет использование доступного метода DateTimeZone::getOffset(), который возвращает смещение в секундах для часового пояса в указанной дате/время.

$timezone = new DateTimeZone("Europe/Andorra");
$offset   = $timezone->getOffset(new DateTime);

Ответ 3

Мне нравится использовать PHP Carbon:

$offset = Carbon::now('Europe/Andorra')->offsetHours;