1

我在 javascript 中创建新的日期对象,并根据我是否使用 dateString 参数与年/月/日整数参数看到一些不一致。

这是一个例子:

var dt1 = new Date(1979,3,5);
var dt2 = new Date('1979-04-05');

jsFiddle 示例

dt1 被赋值:Thu Apr 05 1979 00:00:00 GMT-0500(中央夏令时)

dt2 被赋值: Wed Apr 04 1979 19:00:00 GMT-0500 (Central Daylight Time)

有人可以解释这种行为吗?第二个示例(dt2)恰好是 Chrome 从 input[type=date] 元素返回选定日期的格式,这就是我试图弄清楚这一点的原因。

4

1 回答 1

4

看起来该表单'1979-04-05'被解释为 UTC 日期(然后在显示时将该 UTC 日期转换为本地时间)。该表格new Date(1979,3,5);被解释为当地时间。您可以使用Date.UTC3 参数形式强制 UTC 时间(请参阅文档)。

Date解析(尤其是时区处理)在浏览器之间通常不统一,最好不要依赖它 - 尽可能使用 UTC,或者使用单独的库,如Date.jsmoment.js

于 2013-08-27T16:47:23.093 回答