• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • DateTimeZone::listAbbreviations()

    timezone_abbreviations_list

    (PHP 5 >= 5.2.0, PHP 7)

    返回一个包含 dst (夏令时),时差和时区信息的关联数组。

    说明

    面向对象风格
    publicstaticDateTimeZone::listAbbreviations(void): array
    过程化风格
    timezone_abbreviations_list(void): array

    返回值

    成功,返回数组,或者在失败时返回FALSE

    范例

    Example #1timezone_abbreviations_list()函数的范例:

    <?php
    $timezone_abbreviations = DateTimeZone::listAbbreviations();
    print_r($timezone_abbreviations["acst"]);
    ?>
    

    以上例程的输出类似于:

    Array
    (
        [0] => Array
            (
                [dst] => 1
                [offset] => -14400
                [timezone_id] => America/Porto_Acre
            )
        [1] => Array
            (
                [dst] => 1
                [offset] => -14400
                [timezone_id] => America/Eirunepe
            )
        [2] => Array
            (
                [dst] => 1
                [offset] => -14400
                [timezone_id] => America/Rio_Branco
            )
        [3] => Array
            (
                [dst] => 1
                [offset] => -14400
                [timezone_id] => Brazil/Acre
            )
    )
    

    参见

    This method returns an associative array containing some 'major' timezones (like CEST), which on their own contain more specific 'geographic' timezones (like Europe/Amsterdam).
    If you're using these timezones and their offset/DST information, it's extremely important to realize the following:
    *It seems like ALL DIFFERENT OFFSET/DST CONFIGURATIONS (including historical configurations) of each timezone are included!*
    For example, Europe/Amsterdam can be found six times in the output of this function. Two occurrences (offset 1172/4772) are for the Amsterdam time used until 1937; two (1200/4800) are for the time that was used between 1937 and 1940; and two (3600/4800) are for the time used since 1940.
    *Therefore, YOU CANNOT RELY ON THE OFFSET/DST INFORMATION RETURNED BY THIS FUNCTION as being currently correct/in use!*
    If you want to know the current offset/DST of a certain timezone, you'll have to do something like this:
    <?php
    $now = new DateTime(null, new DateTimeZone('Europe/Amsterdam'));
    echo $now->getOffset();
    ?>
    P.S. I'm sorry for my use of caps lock in this post, but as this behavior is not described in the documentation, I considered it to be important enough to shout. Normally I don't do such things :)
    Note that the dst field is of boolean type, so if you are doing an identity comparison, you need to test for true or false, not 0 or 1. For example:
    <?php
     $timezone_abbreviations = DateTimeZone::listAbbreviations();
     foreach ($timezone_abbreviations["est"] as $tz) {
      echo $tz['timezone_id'];
      // if ($tz['dst'] === 1) will always evaluate to false
      if ($tz['dst'] === true) {
       echo " (DST observed)<br />\n";
      }
      // Could use else here, but for illustration...
      if ($tz['dst'] === false) {
       echo " (DST not observed)<br />\n";
      }
     }
    ?>