根据系统日期格式而不是语言显示JavaScript DateTime

时间:2017-12-06 09:04:42

标签: javascript datetime datetime-format

我们当前正在显示当前用户区域设置中的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格式设置上。

System setting with English language but German date format

1 个答案:

答案 0 :(得分:0)

经过更深入的研究后,很明显这是 - 现在 - 真的不可能。 This StackOverflow answer包含另一种呈现日期的方法。我的问题和答案中提出的方式都取决于浏览器的正确实现。 解决问题的所有其他选项都需要用户选择自定义DateTime格式,然后我们相应地呈现日期。这可以使用locale as described in MDNDateTimeFormat参数。