创建新日期对象时出现不一致

时间:2013-08-27 16:27:22

标签: javascript date

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

以下是一个例子:

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

jsFiddle with example

dt1被赋值:Thu Apr 05 1979 00:00:00 GMT-0500(Central Daylight Time)

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

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

1 个答案:

答案 0 :(得分:4)

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

Date解析(特别是时区处理)在浏览器中通常不一致,最好不要依赖它 - 尽可能使用UTC,或使用单独的库,如Date.js或{ {3}}。