PHP使用的美国时区列表?

Joh*_*ohn 40 php timezone

是否只有我可以使用php的美国时区列表?我使用PHP的时区名称,如America/Anchorage,php在这里列出时区:

http://us.php.net/manual/en/timezones.others.php

我想在下拉列表中显示它们供用户选择,但我只需要美国的那些,我不想展示一堆在美国之外.

Joh*_*ohn 84

这是我找到的列表:

Eastern Time    America/New_York
Central Time    America/Chicago
Mountain Time   America/Denver
Mountain Time (no DST) America/Phoenix
Pacific Time    America/Los_Angeles
Alaska Time America/Anchorage
Hawaii-Aleutian America/Adak
Hawaii-Aleutian Time (no DST) Pacific/Honolulu
Run Code Online (Sandbox Code Playgroud)

  • 你从哪里得到这份清单? (10认同)
  • 这是从这里提取的列表:http://php.net/manual/en/timezones.america.php (4认同)

jgr*_*owl 49

正如deceze所说,你可以使用PER_COUNTRY标志.

$timezone_identifiers = DateTimeZone::listIdentifiers(DateTimeZone::PER_COUNTRY, 'US');
foreach($timezone_identifiers as $timezone_identifier) {
  echo "$timezone_identifier\n";
}
Run Code Online (Sandbox Code Playgroud)

输出:

America/Adak
America/Anchorage
America/Boise
America/Chicago
America/Denver
America/Detroit
America/Indiana/Indianapolis
America/Indiana/Knox
America/Indiana/Marengo
America/Indiana/Petersburg
America/Indiana/Tell_City
America/Indiana/Vevay
America/Indiana/Vincennes
America/Indiana/Winamac
America/Juneau
America/Kentucky/Louisville
America/Kentucky/Monticello
America/Los_Angeles
America/Menominee
America/Metlakatla
America/New_York
America/Nome
America/North_Dakota/Beulah
America/North_Dakota/Center
America/North_Dakota/New_Salem
America/Phoenix
America/Shiprock
America/Sitka
America/Yakutat
Pacific/Honolulu
Run Code Online (Sandbox Code Playgroud)

  • 我相信这个答案是最能回答OP要求(在他的评论中)自动化的答案的答案。这是一个完整的列表,并且更具前瞻性。 (2认同)

dec*_*eze 5

这将自动为您提供美国时区列表:

if (defined('DateTimeZone::AMERICA')) {
    // PHP 5.3+
    $timezoneIdentifiers = timezone_identifiers_list(DateTimeZone::AMERICA);
} else {
    // PHP 5.2
    $timezoneIdentifiers = timezone_identifiers_list();
    $timezoneIdentifiers = array_filter($timezoneIdentifiers, create_function('$tz', 'return preg_match("/^America\//", $tz);'));
}
Run Code Online (Sandbox Code Playgroud)

请注意,这将包括南美,加拿大等时区.您可以使用DateTimeZone::PER_COUNTRY作为timezone_identifiers_listPHP 5.3 的过滤器,看看是否有你想要的,或者过滤完整列表US/.最好的选择可能是挑选时区.