2012-11-16 70 views
0

我试图输入当前时间通过新的Date()返回的少1小时...HTML5时间输入显示比实际时间

$('#TSE').val(new Date().toJSON().substring(11,16)); 

......在时间的输入字段:

<input type="time" id="TSE"> 

该值的格式为hh:mm,并且被输入字段接受。

问题是,它显示的是比实际时间少了1小时

例如,如果新的Date()将2012-11-16T11:59,输入框会显示10:59

我使用Safari移动(Web应用程序)遇到此问题。我的时区是CET(GMT + 1)。几星期前我们失去了DST。

谢谢。

+0

CET = UTC + 1顺便说一句,严格来说:-) – Kos

回答

1
$('#TSE').val(new Date().toLocaleTimeString()); 
1

您显示的时间不正确。这里是发生了什么:

> new Date().toJSON() 
'2012-11-16T12:08:42.914Z' 
> new Date().toJSON().substring(11,16) 
'12:08' 

'toJSON()日期转换为UTC和格式W/R/T ISO 8601。日期最后有'Z';这表示UTC。

这对于.toJSON()执行此转换是有意义的,因为这对于存储或传输的日期进行归一化是有益的。为了在UI中显示,最好使用其他格式化功能。

参见:Where can I find documentation on formatting a date in JavaScript?

+0

感谢。我正在使用toJSON(),因为我“在某处看到它”。我尝试过toString()并且可以以相同的方式提取时间和日期。 –