0

我正在尝试输入由 new Date() 返回的当前时间...

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

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

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

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

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

例如,如果 new Date() 为2012-11-16T11:59,则输入字段将显示10:59

我在使用 Safari Mobile(网络应用程序)时遇到了这个问题。我的时区是 CET (GMT+1)。几周前我们失去了夏令时。

谢谢你。

4

2 回答 2

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 中显示,最好使用另一个格式化函数。

另请参阅:在哪里可以找到有关在 JavaScript 中格式化日期的文档?

于 2012-11-16T12:11:55.733 回答
1
$('#TSE').val(new Date().toLocaleTimeString());
于 2012-11-16T12:08:39.783 回答