查询加拿大所有可用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 -
相关产品推荐
相关产品推荐

