JavaScript 获取浏览器支持的时区

3 阅读1分钟

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');
}