在对网站进行编码并格式化日期时,我想使用用户在浏览器中设置的区域设置。
例如,如果用户定制了他们的chrome://settings/languages
在 Chrome 中设置为非默认值,这就是我想要使用的值。
但是,当我在此类浏览器的控制台中运行下面的代码时,我得到两个不同的值。
[window.navigator.language, new Intl.DateTimeFormat().resolvedOptions().locale]
// Array [ "en-AU", "en-US" ]
navigator.language
给了我预期的价值,但是new Intl.DateTimeFormat().resolvedOptions().locale
才不是。
(对我来说)这两个项目的 MDN 似乎表明它们应该返回相同的值:
-
NavigatorLanguage.语言 https://developer.mozilla.org/en-US/docs/Web/API/NavigatorLanguage/language
returns a string representing the preferred language of the user
-
Intl.DateTimeFormat 区域设置参数 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat#Parameters
To use the browser's default locale, omit this argument or pass undefined.
这两个调用都应该返回用户在浏览器设置中配置的区域设置吗?
我使用的是 macOS,发现 Chrome 的navigator.languages
反映浏览器语言设置,同时Intl.DateTimeFormat().resolvedOptions().locale
反映操作系统语言设置。不知道其他操作系统是否也出现这种情况。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)