我们当前正在显示当前用户区域设置中的JavaScript DateTime对象,这些对象的语言类似于此示例(taken from MDN directly,因为这与我们的代码匹配但已被提取):
var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
console.log(new Intl.DateTimeFormat().format(date));
总的来说,这很有效。美国用户获得扭曲的格式11/20/2012
,而德国用户获得有序的点状格式20.11.2012
。
但是,这只会根据语言而改变。下面的屏幕截图显示了不同的系统区域设置:英语语言,但德语日期时间格式。在这种情况下,JavaScript示例遗憾地显示英语格式11/20/2012
。
由于这让我们的一些用户感到困惑,有没有办法检索当前系统的DateTime格式设置或区域设置才能正确呈现JavaScript DateTime?到目前为止我在Stackoverflow上找到的所有问题都只集中在用户语言而不是用户系统DateTime格式设置上。
答案 0 :(得分:0)
经过更深入的研究后,很明显这是 - 现在 - 真的不可能。
This StackOverflow answer包含另一种呈现日期的方法。我的问题和答案中提出的方式都取决于浏览器的正确实现。
解决问题的所有其他选项都需要用户选择自定义DateTime格式,然后我们相应地呈现日期。这可以使用locale
as described in MDN的DateTimeFormat
参数。