当我的 Chrome 语言和 OS 区域设置都设置为非美国值时,为什么 Google Chrome 以美国格式显示日期?

Why is Google Chrome showing dates in US format when both my Chrome language and OS locale are set to non-US values?

我是 运行 Fedora 31(但在 Fedora 29 上有同样的问题)和 Google Chrome(78.0.3904.87 官方版本 64 位)。在过去 6 个月的某个时候,我注意到日期以美国格式 (mm/dd/yyyy) 出现,而​​不是我希望看到的 dd/mm/yyyy 格式。

在线搜索类似问题,答案似乎总是在 Google 设置中更改语言,事实上,当我检查时,默认语言是英语(美国)。但是,当我选择英语 (UK) 作为 Chrome 中的唯一语言时,这并没有解决问题。即使仅选择德语(德国)作为语言也无法解决问题。

我可以从 http://www.localeplanet.com/support/browser.html 看到我的浏览器语言设置正确(navigator.language:en-GB),但也可以从同一页面看到 date.toLocaleDateString() 仍然是以美国格式返回日期。

我还在终端中检查了 localectl 的输出,结果按预期返回了 en_IE.utf-8。

所以,我的 OS 和我的浏览器都设置为非美国语言环境,但我仍然使用美国日期格式。我花了非常多的时间在这个问题上用头撞墙,这看起来很小。有什么想法吗?

在寻找答案时,我注意到这里至少有一位其他用户(How/Where does JavaScript detect the default locale? 中的 karora - 也许有足够声誉的人可能会让他知道这一点)遇到了与我遇到的相同问题并单击在他的个人资料上显示他也常驻爱尔兰。这让我想到了一些我在 Chromium 错误报告中读到的关于 Chrome 支持的语言环境的内容。

所以,我发现当我将 OS 语言环境从 en_IE 更改为 en_GB 时,我的问题得到解决并且 Google Chrome能够以我期望的格式显示日期。似乎发生的情况是,如果您的 OS 设置的区域设置不在 Google Chrome 中官方支持的语言列表中,那么浏览器和 OS language/locale 要么导致浏览器忽略它自己的 language/locale 设置,要么导致其中的 javascript 引擎出现问题并使其默认返回 en_US 日期、时间等格式。

我会把它作为 Chromium 项目中的一个错误提出来,但希望这个 post 能为遇到类似情况的人节省一些时间。