【问题标题】:How does Chrome determine the input[type="date"] format?Chrome 如何确定 input[type="date"] 格式?
【发布时间】:2021-10-27 15:44:25
【问题描述】:

我的浏览器的navigator.languageen-US,系统(macos)的主要语言是英语(美国)。当我在 chrome 控制台中执行 new Date().toLocaleDateString() 时,我得到了 10/27/2021,这是预期的。奇怪的是对于一个简单的 HTML <input type="date" value="2021-10-27" /> 它在我的 Chrome 中显示为 27/10/2021。我上下搜索,无法弄清楚是什么导致 Chrome 以这种方式格式化日期输入。有什么想法吗?

作为比较,在同一台计算机上的 safari (navigator.language = "en-us") 中,它按预期显示为 10/27/2021。

为了快速复制,这里有一个代码沙箱链接,您可以在 chrome 和 safari 中查看:https://codesandbox.io/s/youthful-moon-oiryd?file=/index.html:119-159

<input type="date" value="2021-10-27">

【问题讨论】:

  • 多么有趣。我不确定是什么原因造成的,但我会说它在 Chrome 上显示为 2021 年 10 月 27 日(zh-CN)。

标签: javascript date google-chrome format


【解决方案1】:

原来是因为我的 macOS 将其区域设置为新加坡,尽管主要语言设置为英语(美国)。在我将地区更新为美国后,输入中的日期更改为 mm/dd/yyyy。我想这意味着 Chrome 会为语言环境选择系统区域,并且优先于语言设置。有趣的是,Chrome 仅针对日期输入格式执行此操作,但不针对 toLocaleDateString 的实现 - 可能是 DOM 与 javascript 实现的两个不同团队。无论如何,把它留在这里以防它可以帮助其他人。

【讨论】:

    猜你喜欢
    • 2018-10-12
    • 1970-01-01
    • 2013-05-22
    • 2018-10-05
    • 2013-05-29
    • 2016-01-13
    • 1970-01-01
    • 1970-01-01
    • 2019-03-10
    相关资源
    最近更新 更多