Ответ 1
вы можете использовать следующие
<?php
$timezone = 'Pacific/Nauru';
$time = new \DateTime('now', new DateTimeZone($timezone));
$timezoneOffset = $time->format('P');
?>
Как мне перейти на преобразование имени часового пояса ( "Азия/Дубай", "Европа/Андорра" и т.д.) в смещение по GMT в часах (или даже секундах, так как я могу преобразовать его оттуда).
Большинство людей спрашивают об обратном, но мне нужно получить смещение часового пояса от имени часового пояса, предоставленного GeoNames.
вы можете использовать следующие
<?php
$timezone = 'Pacific/Nauru';
$time = new \DateTime('now', new DateTimeZone($timezone));
$timezoneOffset = $time->format('P');
?>
Другим вариантом будет использование доступного метода DateTimeZone::getOffset()
, который возвращает смещение в секундах для часового пояса в указанной дате/время.
$timezone = new DateTimeZone("Europe/Andorra");
$offset = $timezone->getOffset(new DateTime);
Мне нравится использовать PHP Carbon:
$offset = Carbon::now('Europe/Andorra')->offsetHours;