我的问题是:chrome datetime-local 以我的操作系统配置方式显示(当前为 dd/mm/yyyy hh:ss)(24 小时制)(en-US)
我想到的以相同方式显示日期的最佳方式。是用只读和无边界进行输入,但这不是最佳选择。我需要将它放在一个变量(字符串)中并能够保存它并可能发送具有相同格式的电子邮件(只是一个例子)
第二个最好的办法是使用 Date.toLocalString();
但它仍然与系统或输入格式不同
据我了解和发现
Date.toLocalString
基于地理位置input[datetime-local]
基于系统。- 系统格式有点不可能得到。
我不想更改输入的日期格式/掩码(因为这不符合客户的意愿) 但我会考虑将输入格式/掩码设置为与 toLocalString 相同的格式以获得相同的行为(如果可能的话)???
http://plnkr.co/edit/nAfgdkPrFqjk6pyBjs8K?p=preview
但是现在当我们有 datetime-local
时,我们是否无法从输入字段中获取系统格式?
最佳答案
(因为这显然是一个 Google Chrome 问题,所以这在相同的上下文中回答了这个问题)
Chrome(和其他浏览器的最新版本)有一个国际化的 JavaScript API。 它允许您根据当前(或任何支持的)区域设置格式化数字和日期并比较字符串。
使用 Intl.DateTimeFormatter
,您可以格式化从输入中获取的日期(new Date(dateInputElement.valueAsNumber)
将为您提供原始日期对象)-
var formatter = new Intl.DateTimeFormat();
console.log(formatter.format(new Date(dateInputElement.valueAsNumber)));
您可以在构造 DateTimeFormatter
时使用选项对象对其进行配置 -
var formatter = new Intl.DateTimeFormat((new Intl.DateTimeFormat).resolvedOptions().locale,{year: "numeric", month: "numeric", day: "numeric", hour: "numeric", minute: "numeric", second: "numeric"});
console.log(formatter.format(new Date(dateInputElement.valueAsNumber)));
关于javascript - 将日期显示为日期时间输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22666354/