【问题标题】:Display JavaScript DateTime according to system date format instead of language根据系统日期格式而不是语言显示 JavaScript DateTime
【发布时间】:2017-12-06 09:04:41
【问题描述】:

我们目前根据与此示例类似的语言在当前用户语言环境中显示 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

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

【问题讨论】:

  • 可以说这是浏览器的不当行为。作为网站所有者,您不应该/不能担心在任何个人计算机上设置首选区域设置的所有可能方式。
  • 我完全同意这一点,但如果能找到解决此问题的方法或至少为未来的 StackOverflow 用户记录它,那将是一件很棒的事情

标签: javascript datetime datetime-format


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2015-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多