创建新日期对象时的不一致
我正在JavaScript中创建新的日期对象,并根据我是否使用dateString参数与年/月/日整数参数看到一些不一致。
这是一个例子:
var dt1 = new Date(1979,3,5);
var dt2 = new Date('1979-04-05');
js以身作则
dt1分配值:Thu Apr 05 1979 00:00:00 GMT-0500(中央夏令时间)
dt2分配值:Wed Apr 04 1979 19:00:00 GMT-0500(中央夏令时间)
有人可以解释这种行为吗? 第二个例子(dt2)恰好是Chrome从输入[type = date]元素返回选定日期的格式,这就是为什么我要弄清楚这一点。
它看起来像'1979-04-05'
形式被解释为UTC日期(然后在显示时将UTC日期转换为本地时间)。 new Date(1979,3,5);
形式new Date(1979,3,5);
被解释为当地时间。 您可以使用Date.UTC
强制3参数表单的UTC时间(请参阅文档)。
Date
解析(特别是时区处理)在浏览器中通常是不统一的,最好不要依赖它 - 尽可能使用UTC,或使用单独的库,如Date.js或moment.js。