Как получить имена и аббревиатуры часового пояса в PHP?

Начиная с идентификатора часового пояса, например "America/Los_Angeles" , как вы находите имена и аббревиатуры этого часового пояса в PHP? Например:

 'PST', 'Pacific Standard Time', 'PDT', 'Pacific Daylight Time' 

Если бы я мог получить только короткую аббревиатуру («PST» и «PDT»), это было бы нормально.

Я просмотрел DateTimeZone::listAbbreviations() и попытался проверить, что посмотреть, которые соответствуют моему id, однако для America / Los_Angeles он находит «PST», «PDT», «PPT» и «PWT», что немного любопытно.

Solutions Collecting From Web of "Как получить имена и аббревиатуры часового пояса в PHP?"

Надеюсь, это поможет:

 function get_timezone_abbreviation($timezone_id) { if($timezone_id){ $abb_list = timezone_abbreviations_list(); $abb_array = array(); foreach ($abb_list as $abb_key => $abb_val) { foreach ($abb_val as $key => $value) { $value['abb'] = $abb_key; array_push($abb_array, $value); } } foreach ($abb_array as $key => $value) { if($value['timezone_id'] == $timezone_id){ return strtoupper($value['abb']); } } } return FALSE; } 

get_timezone_abbreviation ( 'Америка / New_York');

И вы получаете:

По восточному времени

Надеюсь, что это поможет вам

 <?php date_default_timezone_set('Europe/Sofia'); echo date_default_timezone_get(); // Europe/Sofia echo ' => '.date('T'); // => EET ?> 

Надеюсь, что это поможет вам

 <?php $dateTime = new DateTime(); $dateTime->setTimeZone(new DateTimeZone('America/Havana')); echo $dateTime->format('T'); ?> 

Похоже, у Симфонии есть методы для этого, например select_timezone_tag. Вы можете проверить их исходный код, чтобы узнать, как это делается.

Дело в том, что название часового пояса зависит от времени года, например, зимой это CET, летом это CEST.

Мы можем получить имя часового пояса, используя текущую дату и время.

 $timezone = 'Pacific/Midway'; $dt = new DateTime('now', new DateTimeZone($timezone)); $abbreviation = $dt->format('T'); // SST 

он поддерживает только временные интервалы, которые знает php, он не знал, что такое «Стандартное тихоокеанское время».

Здесь вы можете увидеть, как он переключается между CET и CEST

  $t = new CDateTime('2015-09-22 11:00', new DateTimeZone('CET')); $t->format('T'); // CEST $t = new CDateTime('2015-12-22 11:00', new DateTimeZone('CET')); $t->format('T'); // CET