timezone_identifiers_list() 在 php 8.1 中返回一个从 0 开始索引的数值数组,包含全部 iana 规范时区标识符(如 'asia/shanghai'),共 400+ 个,不含缩写或 utc 偏移,不接受参数,结果与本地设置无关。

timezone_identifiers_list() 在 PHP 8.1 中返回一个包含所有可用时区标识符的索引数组(数值键数组),每个元素是一个标准的时区字符串,例如 'Asia/Shanghai'、'Europe/London'、'America/New_York' 等。
这个函数不接受参数(PHP 8.1 中已废弃 $what 和 $country 参数),调用方式就是:
$zones = timezone_identifiers_list();
✅ 返回值特点
- 是一个纯数组,键为从
0开始的整数(非关联数组); - 所有时区名均符合 IANA 时区数据库 规范;
- 包含全球所有支持的时区,总数通常超过 400 个(具体数量随 PHP 版本和系统 tzdata 更新而变化);
- 不区分“常用”或“废弃”,包含历史时区(如
'Europe/Busingen')和带规则的时区(如'Pacific/Apia'); -
不包含缩写(如
CST、PST)或 UTC 偏移格式(如UTC+8),只返回区域/城市风格的完整标识符。
? 实际使用示例
$zones = timezone_identifiers_list(); echo count($zones); // 输出类似:436(具体数字依环境而定) // 取前5个看看 print_r(array_slice($zones, 0, 5)); // 输出类似: // Array // ( // [0] => Africa/Abidjan // [1] => Africa/Accra // [2] => Africa/Addis_Ababa // [3] => Africa/Algiers // [4] => Africa/Asmara // )
⚠️ 注意事项
- 该函数不依赖服务器本地时区设置,结果在相同 PHP 版本下基本一致;
- 如果需要按地区筛选(如只取亚洲时区),需自行用
array_filter()处理:$asiaZones = array_filter($zones, fn($tz) => str_starts_with($tz, 'Asia/'));
- 不要用于前端直接渲染全部列表——数据量大且用户难选,建议结合地理层级(大洲 → 国家 → 城市)做分级选择;
- 若需获取当前系统默认时区,应使用
date_default_timezone_get(),而非从此列表中推断。
不复杂但容易忽略
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











