Как получить имена и аббревиатуры часового пояса в 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", что немного любопытно.
Ответы
Ответ 1
Надеюсь, это поможет:
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');
И вы получите:
EDT
Ответ 2
надеюсь, что это поможет вам
<?php
date_default_timezone_set('Europe/Sofia');
echo date_default_timezone_get(); // Europe/Sofia
echo ' => '.date('T'); // => EET
?>
Ответ 3
Надеюсь, это поможет вам
<?php
$dateTime = new DateTime();
$dateTime->setTimeZone(new DateTimeZone('America/Havana'));
echo $dateTime->format('T');
?>
Ответ 4
Похоже, у Симфонии есть методы для этого, например. select_timezone_tag. Вы можете проверить их исходный код, чтобы узнать, как это делается.
Ответ 5
Дело в том, что название часового пояса зависит от времени года, например, зимой его 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