根据navigator.language将ISO 8601日期字符串显示为本地日期和时间

时间:2018-11-29 10:11:38

标签: javascript datetime localization locale iso8601

我一直在尝试根据navigator.language将ISO字符串解析为本地时间戳后显示本地日期和时间。

let sampleDate = new Date('2018-11-29T09:54:46.863207Z').toLocaleString(navigator.language);

因此,当我更改浏览器语言首选项时,它会以正确的语言环境反映日期格式,但这似乎不适用于ISO字符串的时间部分。

浏览器语言环境为en-AU的结果- Data Last Updated at 29/11/2018, 3:24:46 pm

浏览器语言环境为en-US-Data Last Updated at 11/29/2018, 3:24:46 pm的结果

查看仅日期格式如何根据语言环境进行更改。它似乎并不影响ISO 8601字符串的时间部分。

我曾尝试使用moment.js以浏览器区域设置格式显示日期和时间,但未成功。

我在这里想念东西吗?

1 个答案:

答案 0 :(得分:0)

您似乎正在尝试获取UTC日期字符串,将其转换为客户端浏览器的本地日期和时间,然后根据语言环境设置日期格式。只要您正确创建Date对象,JavaScript就会为您完成大部分工作,因此您可能会觉得有点过头。

不建议使用new Date()构造函数来解析日期字符串,因此下面的代码示例使用一点正则表达式并解压缩来解析日期字符串,然后您可以使用{{1}在UTC中创建日期}。此时,JavaScript将自动在客户端浏览器的本地日期和时间中表示日期对象,然后您可以使用new Date(Date.UTC(...))为客户端浏览器的语言环境应用格式。例如:

toLocaleString()