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

查询加拿大所有可用IANA时区(Intl.DateTimeFormat API场景)

加拿大所有IANA规范时区列表及验证方案

完整加拿大IANA时区集合

根据IANA时区数据库,所有属于加拿大的时区如下:

  • America/Toronto(东部时间,覆盖安大略省、魁北克省多数区域)
  • America/Vancouver(太平洋时间,不列颠哥伦比亚省)
  • America/Halifax(大西洋时间,新斯科舍省、新不伦瑞克省等)
  • America/St_Johns(纽芬兰时间,纽芬兰与拉布拉多省)
  • America/Winnipeg(中部时间,曼尼托巴省)
  • America/Edmonton(山地时间,阿尔伯塔省、西北地区多数区域)
  • America/Creston(山地时间,不列颠哥伦比亚省局部,无夏令时)
  • America/Rainy_River(中部时间,安大略省西北部,无夏令时)
  • America/Atikokan(东部时间,安大略省西北部,无夏令时)
  • America/Pangnirtung(东部时间,努纳武特地区局部)
  • America/Iqaluit(东部时间,努纳武特地区)
  • America/Resolute(中部时间,努纳武特地区)
  • America/Yellowknife(山地时间,西北地区)
  • America/Inuvik(山地时间,西北地区)
  • America/Cambridge_Bay(中部时间,努纳武特地区)
  • America/Moncton(大西洋时间,新不伦瑞克省局部)
  • America/Goose_Bay(大西洋时间,纽芬兰与拉布拉多省局部)

验证代码实现

你可以通过以下代码判断用户时区是否属于加拿大,进而显示英法语言切换按钮:

// 预定义加拿大时区集合,查询效率更高
const CANADIAN_TIMEZONES = new Set([
  'America/Toronto',
  'America/Vancouver',
  'America/Halifax',
  'America/St_Johns',
  'America/Winnipeg',
  'America/Edmonton',
  'America/Creston',
  'America/Rainy_River',
  'America/Atikokan',
  'America/Pangnirtung',
  'America/Iqaluit',
  'America/Resolute',
  'America/Yellowknife',
  'America/Inuvik',
  'America/Cambridge_Bay',
  'America/Moncton',
  'America/Goose_Bay'
]);

// 获取用户当前时区
const userTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
// 判断是否为加拿大时区
const isUserInCanada = CANADIAN_TIMEZONES.has(userTimezone);

if (isUserInCanada) {
  // 执行显示英法语言切换按钮的逻辑
  console.log('显示英法语言切换按钮');
}

注意事项

  • 部分时区属于加拿大境内无夏令时的特殊区域,需确保这些时区被纳入判断范围,避免遗漏。
  • 时区判断存在一定局限性:若用户手动修改了系统时区,结果可能与实际地理位置不符,但该方案足以覆盖绝大多数常规场景。
  • IANA时区数据库会不定期更新,若需长期维护,建议定期核对时区列表进行同步。

内容的提问来源于stack exchange,提问作者M -

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 11:06:19