JavaScript 可以通过 Intl.supportedValuesOf 方法获取浏览器支持的时区
基本用法
代码示例:
// 获取所有支持的时区
const timeZones = Intl.supportedValuesOf('timeZone');
console.log(timeZones);
返回值:
- 返回一个数组,包含所有支持的时区标识符(如
"Asia/Shanghai"、"America/New_York"等) - 时区名称遵循 IANA 时区数据库(通常称为 tz 数据库)的命名规范
- 数组按字典序排序
可以在浏览器调试界面执行
输出:
['Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul'...
也可以通过在线工具查看: nanojs.net/tool/dateti…
我的 Chrome 142.0.7444.176 浏览器支持 418 种 timezone ,而我的 Safari 18.4 浏览器支持 419 种。
浏览器支持情况
不同版本的浏览器对于时区支持的情况不同,桌面端和移动端支持情况也不一样。不同的浏览器对于时区支持的数量也不同。
支持的桌面浏览器
- Chrome/Edge: 97+ (2022年1月发布)
- Firefox: 93+ (2021年10月发布)
- Safari: 15.4+ (2022年3月发布)
- Opera: 83+ (2022年3月发布)
- Samsung Internet: 18.0+ (2023年2月发布)
支持的移动浏览器
- iOS Safari: 15.4+ (2022年3月发布)
- Android WebView: 97+ (2022年1月发布)
- Chrome for Android: 97+ (2022年1月发布)
- Firefox for Android: 93+ (2021年10月发布)
不支持的浏览器
- Internet Explorer: 全系列不支持
- Node.js: 需要 v18.0.0 或更高版本(Node.js 18+)
- Bun: 支持(从早期版本开始)
- Deno: 支持(从 1.30+ 开始)
检测浏览器是否支持
// 检测是否支持
if (typeof Intl !== 'undefined' && Intl.supportedValuesOf) {
try {
const timeZones = Intl.supportedValuesOf('timeZone');
console.log(`支持 ${timeZones.length} 个时区`);
} catch (e) {
console.log('不支持 timeZone 参数');
}
} else {
console.log('不支持 Intl.supportedValuesOf');
}