javascript - 将日期显示为日期时间输入

标签 javascript html google-chrome datetime

我的问题是:chrome datetime-local 以我的操作系统配置方式显示(当前为 dd/mm/yyyy hh:ss)(24 小时制)(en-US)

我想到的以相同方式显示日期的最佳方式。是用只读和无边界进行输入,但这不是最佳选择。我需要将它放在一个变量(字符串)中并能够保存它并可能发送具有相同格式的电子邮件(只是一个例子)

第二个最好的办法是使用 Date.toLocalString(); 但它仍然与系统或输入格式不同

据我了解和发现

  • Date.toLocalString 基于地理位置
  • input[datetime-local] 基于系统。
  • 系统格式有点不可能得到。

我不想更改输入的日期格式/掩码(因为这不符合客户的意愿) 但我会考虑将输入格式/掩码设置为与 toLocalString 相同的格式以获得相同的行为(如果可能的话)???


enter image description here

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/

相关文章:

鼠标悬停时 JavaScript SlideDown 不起作用

python - 获取内部 HTML - Selenium、BeautifulSoup、Python

javascript - 在 Angular 中将图像转换为文件类型

html - Jekyll中高亮标签添加id属性

javascript - JSON.parse 返回字符串而不是数组

android - 在 Android 模拟器中安装 Chrome for Android

javascript - 将我的 Jquery 元素更改为纯 JavaScript

javascript - 对方法过度收费是个好主意吗?

javascript - 谷歌地图 api 标记不显示

reactjs - PWA only 绿地项目的优缺点?