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

Intl.DateTimeFormat返回错误locale值:Chrome与其他浏览器差异咨询

问题分析:Chrome中Intl.DateTimeFormat返回en-GB而非en-AU的原因

核心认知澄清

Intl.DateTimeFormat的默认**locale(区域语言)和timeZone(时区)**是两个独立的配置项:

  • locale由浏览器的用户首选语言设置决定,负责日期的格式化规则(比如日期顺序、语言文本);
  • timeZone仅用于时间的计算和转换,不会直接映射到对应的locale。

你的情况并非Chrome Bug,而是浏览器间默认locale的 fallback 策略差异导致的。

具体原因

  1. Chrome的语言设置优先级更高
    检查Chrome的chrome://settings/languages页面:如果你的首选语言列表中en-GB排在en-AU之前,或者默认语言设置为en-GB,那么Intl API会直接返回该locale,不会因为时区是Australia/Sydney自动切换到en-AU。

  2. 浏览器实现差异

    • Firefox和Edge在用户未明确设置首选语言时,会结合系统区域、时区等信息做更灵活的locale推导,自动匹配en-AU;
    • Chrome的策略更严格,优先遵循自身的语言设置,只有当没有匹配的可用语言时,才会做有限的 fallback,不会主动根据时区调整locale。

解决方案(如需匹配时区对应的locale)

如果需要强制获取与时区匹配的locale,可以通过以下方式实现:

  • 显式指定locale参数:
    console.log(Intl.DateTimeFormat('en-AU').resolvedOptions());
    
  • 根据时区动态推导(示例):
    const { timeZone } = Intl.DateTimeFormat().resolvedOptions();
    const targetLocale = timeZone.includes('Australia/') ? 'en-AU' : 'en-GB';
    console.log(Intl.DateTimeFormat(targetLocale).resolvedOptions());
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 18:07:09