簡體   English   中英

如何在PHP中獲取時區的名稱和縮寫?

[英]How to get the names and abbreviations of a time zone in 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”略有好奇。

我希望這有幫助:

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( '美國/紐約');

你得到:

美東時間

希望這個能對您有所幫助

<?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');
?>

問題是,時區名稱取決於一年中的時間,例如在冬季它是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

看起來Symphony有這方面的方法,例如select_timezone_tag。 您可以查看他們的源代碼以了解它是如何完成的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM