В PHP, как вы получаете текстовое смещение часового пояса

Как вы получаете текст смещения часового пояса? Например, если я передам:

America/New_York

…Я хотел бы получить обратно:

-04:00

-1

Решение

Я создал функцию с именем getTimezoneOffsetText

<?php
function getTimezoneOffsetText($timezone){
date_default_timezone_set( "UTC" );
$daylight_savings_offset_in_seconds = timezone_offset_get(timezone_open($timezone), new DateTime());
$mod = $daylight_savings_offset_in_seconds/60 % 60;
$min = abs($mod);

return sprintf('%+03d', $daylight_savings_offset_in_seconds/60/60) . ':' . sprintf('%02d', $min);
}

$offset1 = 'America/New_York';
$offset2 = 'Asia/Kabul';
$offset3 = 'Asia/Kathmandu';
$offset4 = 'Israel';
$offset5 = 'Greenwich';
$offset6 = 'America/Caracas';

echo '<pre>';
echo $offset1 . ":\t" . getTimezoneOffsetText($offset1) . '<br/>';
echo $offset2 . ":\t\t" . getTimezoneOffsetText($offset2) . '<br/>';
echo $offset3 . ":\t\t" . getTimezoneOffsetText($offset3) . '<br/>';
echo $offset4 . ":\t\t\t" . getTimezoneOffsetText($offset4) . '<br/>';
echo $offset5 . ":\t\t" . getTimezoneOffsetText($offset5) . '<br/>';
echo $offset6 . ":\t" . getTimezoneOffsetText($offset6) . '<br/>';
echo '</pre>';

Он генерирует эти данные:

America/Caracas:    -04:30
Asia/Kabul:         +04:30
Asia/Kathmandu:     +05:45
Israel:             +03:00
Greenwich:          +00:00
America/New_York:   -04:00

Обратите внимание, что он получает полчаса и другие «нестандартные» часовые пояса, такие как Каракас, Кабул и Катманду. Мне любопытно, хотя, если уже существует функция, которая выполняет это.

-1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]