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

Display JavaScript DateTime according to system date format instead of language

我们目前在当前用户语言环境中显示 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。 但是,这仅根据语言而变化。下面的屏幕截图显示了一个不同的系统区域设置:英语但德语 DateTime 格式。在这种情况下,JavaScript 示例遗憾地显示了英文格式 11/20/2012.

由于这让我们的一些用户感到困惑,是否有办法检索当前系统日期时间格式设置或区域设置以正确呈现 JavaScript 日期时间?到目前为止,我在 Whosebug 上发现的所有问题都只集中在用户语言上,而不是用户系统 DateTime 格式设置上。

经过更彻底的研究后,很明显这是 - 就目前而言 - 确实是不可能的。 This Whosebug answer 包含另一种呈现日期的方法。我的问题和答案中提出的方式都取决于浏览器的正确实现。 解决该问题的所有其他选项将要求用户 select 自定义 DateTime 格式,并且我们相应地呈现日期。这可以使用 DateTimeFormat as described in MDN.

locale 参数