DateTimeZone::listIdentifiers

timezone_identifiers_list

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

DateTimeZone::listIdentifiers -- timezone_identifiers_list返回一个包含了所有时区标示符的索引数组。

说明

面向对象风格

public static DateTimeZone::listIdentifiers ( int $what = DateTimeZone::ALL , string $country = null ) : array

过程化风格

timezone_identifiers_list ( int $what = DateTimeZone::ALL , string $country = null ) : array

参数

what

DateTimeZone 类中的常量之一。

country

由两个字母组成,ISO 3166-1 兼容的国家代码。

Note: 只有当 what 被设置为DateTimeZone::PER_COUNTRY时,该选项才会被使用。

返回值

成功,返回数组,失败则返回false.

更新日志

版本 说明
5.3.0 添加可选的 whatcountry 参数。

范例

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

<?php
$timezone_identifiers 
DateTimeZone::listIdentifiers();
for (
$i=0$i 5$i++) {
    echo 
"$timezone_identifiers[$i]\n";
}
?>

以上例程的输出类似于:

Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara

参见

User Contributed Notes

PHP Guru 18-Jun-2020 09:17
In tests that I have done, not all time zones are returned by this function. For example the following aliases Asia/Katmandu and Asia/Calcutta are not returned, but these time zones are supported in tests that I have done such as the following:

<?php
echo date_default_timezone_set('Asia/Calcutta');
?>

result:

Fri, 19 Jun 2020 03:26:52 +0530

UTC+05:30 is the correct time zone for Calcutta.

Asia/Katmandu and Asia/Calcutta are aliases for Asia/Kathmandu and Asia/Kolkata respectively (which can be found in the list)

Hopefully this helps some people because without these time zones appearing in the list one might not know that they are supported or even exist.
repohelga at example dot com 07-Nov-2019 01:42
Beware that the ISO 3166-1 country code passed to second parameter $country has to be in capital letters (eg. 'US', 'DE', ...).
Passing the country code in lower case like 'us' or 'de' will not return the failure-value false but just an empty array.
kalle at example dot com 02-Feb-2016 09:36
Even though the manual currently says that the first parameter has to be "One of DateTimeZone class constants", you may actually combine these constants:

<?php
  $a
= DateTimeZone::listIdentifiers(DateTimeZone::AFRICA); //gives africa time zones
 
$b = DateTimeZone::listIdentifiers(DateTimeZone::AMERICA); //gives american time zones
 
$c = DateTimeZone::listIdentifiers(DateTimeZone::AFRICA | DateTimeZone::AMERICA); //gives both african and american time zones
?>

Be sure to use |, not ||.