You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

时区名称国际化:如何获取指定语言的时区列表?

获取指定语言环境下的时区信息

首先明确:Intl.supportedValuesOf('timeZone')返回的是当前运行时支持的所有IANA时区标识符列表,这个列表是固定的,和语言环境(locale)无关——不存在“指定locale专属的时区标识符列表”,因为时区标识符是全球统一的标准(比如Asia/Shanghai、America/New_York)。

但如果你需要的是指定语言环境下的时区本地化显示名称,可以通过Intl.DateTimeFormat结合时区标识符来生成,步骤如下:

  1. 先获取所有支持的时区标识符
  2. 对每个标识符,用目标locale的Intl.DateTimeFormat提取本地化名称

代码示例

// 获取所有支持的时区标识符
const allTimeZoneIds = Intl.supportedValuesOf('timeZone');

// 指定目标语言环境,比如中文(中国大陆)
const targetLocale = 'zh-CN';

// 生成带本地化名称的时区列表
const localizedTimeZones = allTimeZoneIds.map(zoneId => {
  // 创建指定时区和语言环境的日期格式化器
  const formatter = new Intl.DateTimeFormat(targetLocale, {
    timeZone: zoneId,
    timeZoneName: 'long' // 可选 'short' 获取短名称(如“北京时间”)
  });
  // 通过格式化日期提取时区名称
  const formatParts = formatter.formatToParts(new Date());
  const zoneName = formatParts.find(part => part.type === 'timeZoneName').value;
  
  return {
    id: zoneId,
    localizedName: zoneName
  };
});

// 输出示例:[{ id: 'Asia/Shanghai', localizedName: '中国标准时间' }, ...]
console.log(localizedTimeZones);

补充说明

  • 不同JavaScript运行时(浏览器、Node.js等)支持的时区列表可能略有差异,但均基于IANA时区数据库。
  • 如果仅需要时区标识符,直接使用Intl.supportedValuesOf('timeZone')即可,无需指定locale,因为标识符本身是无地域差异的标准值。

内容的提问来源于stack exchange,提问作者Prakash Gupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 09:47:37