timezone_identifiers_list() 是 php 8.2 获取时区标识符列表的内置函数,支持全量返回或按 datetimezone 常量(如 asia、europe)筛选,返回纯字符串数组,需手动排序,常用于时区校验与分组。

PHP 8.2 中 timezone_identifiers_list() 是一个内置函数,用于获取所有支持的时区标识符列表(如 "Asia/Shanghai"、"Europe/London" 等),无需额外扩展或配置,只要 PHP 编译时启用了时区数据(默认开启)即可直接使用。
基础用法:获取全部时区
调用不带参数的 timezone_identifiers_list() 即可返回包含全部时区字符串的索引数组:
$allZones = timezone_identifiers_list(); print_r($allZones); // 输出约 400+ 个时区(具体数量随 tzdata 版本略有变化)
按地区分组筛选时区
该函数支持传入 DateTimeZone 类常量作为参数,快速获取某类时区子集:
-
亚洲时区:
timezone_identifiers_list(DateTimeZone::ASIA) -
欧洲时区:
timezone_identifiers_list(DateTimeZone::EUROPE) -
美洲时区:
timezone_identifiers_list(DateTimeZone::AMERICA) -
UTC 及偏移时区:
timezone_identifiers_list(DateTimeZone::UTC) -
所有带偏移的时区(如 Etc/GMT+5):
timezone_identifiers_list(DateTimeZone::ETC)
常见注意事项
注意以下几点避免踩坑:
- 返回数组是纯字符串,不含时区偏移信息,需配合
new DateTimeZone($tz)和getOffset()获取当前偏移 - 部分时区名已废弃(如
"US/Eastern"),PHP 仍保留兼容性,但推荐使用地理命名格式(如"America/New_York") - 结果顺序不固定,如需排序可手动
sort($zones)或natsort($zones) - 若返回空数组,请检查
date.timezone是否被错误禁用,或运行php -i | grep "timezonedb"确认时区数据库可用
实用小技巧:快速验证某个时区是否存在
结合 in_array() 可做轻量级校验:
$validZones = timezone_identifiers_list();
if (in_array('Asia/Kolkata', $validZones)) {
echo '印度标准时间受支持';
}
也可用 array_flip() 转为键值对提升查询效率(适合高频判断场景)。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











