Имя часового пояса PHP для смещения - PullRequest
21 голосов
/ 18 января 2011

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

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

Ответы [ 3 ]

34 голосов
/ 18 января 2011

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

<?php

$timezone = 'Pacific/Nauru';
$time = new \DateTime('now', new DateTimeZone($timezone));
$timezoneOffset = $time->format('P');
?>
23 голосов
/ 19 января 2011

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

$timezone = new DateTimeZone("Europe/Andorra");
$offset   = $timezone->getOffset(new DateTime);
9 голосов
/ 05 июня 2015

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

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