我可以从<input type =“date”/>访问显示给用户的语言环境格式的字符串吗?

时间:2012-11-21 01:49:36

标签: javascript html5 date dom input

在Chrome的最后几个主要版本中,您可以显示日期输入字段,其值的格式符合用户的区域设置,如下所示:

<input type="date" value="2012-11-20">

在Mac OS X上,将美国设置为我的区域(使用默认日期格式),Chrome会向我显示:

A date input field displaying "11/20/12"

有没有办法在JavaScript中访问显示的字符串? (This answer将其称为演示文稿格式。)input.valueinput.valueAsDate.toLocaleDateString()等属性和方法以各种格式给出了相同的日期,但没有一个非常符合演示文稿格式。

这是我的一些尝试的小提琴:http://jsfiddle.net/peterjmag/7KSbA/2/。使用我的Mac上的Chrome 23,它为我提供了以下输出:

[11/20/12]

input.value
2012-11-20

input.valueAsDate
Mon Nov 19 2012 17:00:00 GMT-0700 (MST)

input.valueAsDate.toDateString()
Mon Nov 19 2012

input.valueAsDate.toLocaleDateString()
Monday, November 19, 2012

input.valueAsDate.toISOString()
2012-11-20T00:00:00.000Z

编辑Here's a similar question让我认为这是不可能的(没有定义重新格式化字符串的方法,就是这样)。

2 个答案:

答案 0 :(得分:2)

没有办法直接获取文本,因为显示日期完全由浏览器处理(为了进一步说明问题,请尝试使用Inspect Element查找您在Chrome或Firefox上寻找的字符串 - 您赢了'能够)。

但是,由于每个浏览器每次都会以相同的格式显示日期,因此 可以让脚本检测浏览器并以与浏览器本身相同的方式格式化日期。那是最好的选择,我担心。

答案 1 :(得分:1)

input.select();
var displayString = window.getSelection().toString();

这适用于Chrome 23.但我不认为它适用于Chrome 24。