gpt4 book ai didi

Javascript - 使用 Intl 获取当前语言环境以显示时间和日期

转载 作者:太空狗 更新时间:2023-10-29 16:44:49 29 4
gpt4 key购买 nike

我希望我的网页以用户的语言环境显示日期和时间。

现在大多数浏览器似乎都支持 Intl(参见 Can I Use Intl)。我可以使用 Intl.DateTimeFormat().resolvedOptions().timeZone 获取浏览器时区。我希望我能够使用我当前的语言环境发出日期时间,方法是:

var date = new Date(2017, 11, 31, 23, 59, 59);
var format = new Intl.DateTimeFormat(
undefined, // locale
{
year: "numeric",
month: "numeric",
day: "numeric",
hour: "numeric",
minute: "numeric",
}
)

console.log(format.format(date))

我在 Windows 上使用 Chrome。我的 Windows 操作系统区域设置为“捷克共和国”。我的首选网站语言在 Chrome 中设置为“捷克语”,但浏览器本身设置为使用美国英语。

通过这些设置,输出以 12 H 格式完成,就像我的语言环境是 en-us 一样。一旦我将 Chrome 浏览器切换为使用捷克语作为其显示语言,时间就会切换为 24 小时格式。

我想我一定遗漏了一些明显的东西——网页真的无法使用用户正在使用的语言环境,还是 Chrome Intl 实现中存在一些错误或不完整?

最佳答案

我发现以下内容在 Chrome 上更可靠:可以使用 navigator.languages[0] 来获取由用户偏好的内容语言定义的语言环境。另见 Best way to determine user's locale within browser有关浏览器兼容性的讨论。

function getLocale() {
return (navigator.languages && navigator.languages.length) ? navigator.languages[0] : navigator.language;
}


var locale = getLocale();
var date = new Date(2017, 11, 31, 23, 59, 59);
var format = new Intl.DateTimeFormat(
locale,
{
year: "numeric",
month: "numeric",
day: "numeric",
hour: "numeric",
minute: "numeric",
}
)

console.log(format.format(date))

仍然无法访问用户选择的区域设置的系统范围,这似乎是一种耻辱。

关于Javascript - 使用 Intl 获取当前语言环境以显示时间和日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43629607/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com