Chrome如何确定input[type="date"]格式?
How does Chrome determine the input[type="date"] format?
我的浏览器 navigator.language
是 en-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。
为了快速复制,这里有一个代码沙箱 link,您可以在 chrome 和 safari 中查看:https://codesandbox.io/s/youthful-moon-oiryd?file=/index.html:119-159
<input type="date" value="2021-10-27">
原来是因为我的 macOS 将其区域设置为新加坡,尽管主要语言设置为英语(美国)。在我将区域更新为美国后,输入中的日期更改为 mm/dd/yyyy。我想这意味着 Chrome 为区域设置选择系统区域,它优先于语言设置。有趣的是,Chrome 仅针对日期输入格式而不是针对 toLocaleDateString
的实现执行此操作——也许 DOM 与 javascript 实现是两个不同的团队。无论如何,把它留在这里以防它可能对其他人有帮助。
我的浏览器 navigator.language
是 en-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。
为了快速复制,这里有一个代码沙箱 link,您可以在 chrome 和 safari 中查看:https://codesandbox.io/s/youthful-moon-oiryd?file=/index.html:119-159
<input type="date" value="2021-10-27">
原来是因为我的 macOS 将其区域设置为新加坡,尽管主要语言设置为英语(美国)。在我将区域更新为美国后,输入中的日期更改为 mm/dd/yyyy。我想这意味着 Chrome 为区域设置选择系统区域,它优先于语言设置。有趣的是,Chrome 仅针对日期输入格式而不是针对 toLocaleDateString
的实现执行此操作——也许 DOM 与 javascript 实现是两个不同的团队。无论如何,把它留在这里以防它可能对其他人有帮助。