TIMEZONE选择框仅更改为美国

时间:2017-02-22 20:34:10

标签: php function drop-down-menu timezone

我有一些代码填充带有时区的选择框,但它包括亚洲,非洲等。我想只列出美国时区。那可能吗?我现在的代码是......

    /*
    Get all timezone listing
    */
    function event_tz_list() {
      $zones_array = array();
      $timestamp = time();
      foreach(timezone_identifiers_list() as $key => $zone) {
        date_default_timezone_set($zone);
        $zones_array[$key]['zone'] = $zone;
        $zones_array[$key]['offset'] = date('P', $timestamp);
        $zones_array[$key]['diff_from_GMT'] = 'UTC/GMT ' . date('P', 
    $timestamp);
      }
      return $zones_array;

    }

非常感谢任何信息!

1 个答案:

答案 0 :(得分:1)

timezone_identifiers_list()有两个参数。如果第一个参数是DateTimeZone::PER_COUNTRY,则获取时区的常量和双字母国家/地区代码。所以这几乎可以得到它:

timezone_identifiers_list(DateTimeZone::PER_COUNTRY, 'US')

如果您想获得7个缩写而不是29个America/City值:

function event_tz_list() {
    foreach(timezone_identifiers_list(DateTimeZone::PER_COUNTRY, 'US') as $key => $zone) {
        $timestamp = time();
        date_default_timezone_set($zone);
        $abbrev = date('T'); // use as the key and you won't get duplicates
        $zones_array[$abbrev]['zone'] = $abbrev;
        $zones_array[$abbrev]['offset'] = date('P', $timestamp);
        $zones_array[$abbrev]['diff_from_GMT'] = 'UTC/GMT ' . date('P', $timestamp);
    }
    return $zones_array;
}

print_r(event_tz_list());

收率:

Array
(
    [HAST] => Array
        (
            [zone] => HAST
            [offset] => -10:00
            [diff_from_GMT] => UTC/GMT -10:00
        )

    [AKST] => Array
        (
            [zone] => AKST
            [offset] => -09:00
            [diff_from_GMT] => UTC/GMT -09:00
        )

    [MST] => Array
        (
            [zone] => MST
            [offset] => -07:00
            [diff_from_GMT] => UTC/GMT -07:00
        )

    [CST] => Array
        (
            [zone] => CST
            [offset] => -06:00
            [diff_from_GMT] => UTC/GMT -06:00
        )

    [EST] => Array
        (
            [zone] => EST
            [offset] => -05:00
            [diff_from_GMT] => UTC/GMT -05:00
        )

    [PST] => Array
        (
            [zone] => PST
            [offset] => -08:00
            [diff_from_GMT] => UTC/GMT -08:00
        )

    [HST] => Array
        (
            [zone] => HST
            [offset] => -10:00
            [diff_from_GMT] => UTC/GMT -10:00
        )

)

其中显示了7个时区(我学到了一些东西):

  

夏威夷 - 阿留申标准时间(HAST)与夏威夷标准时间(HST)之间没有时间差异。