为什么Javascript转换时间不同?

时间:2017-04-22 18:31:09

标签: javascript date time

这是我的两个代码:

var date1 = new Date('2017-04-23');
var date2 = new Date('April 23, 2017');

console.log(date1);
console.log(date2);

这是结果:

Sat Apr 22 2017 17:00:00 GMT-0700 (PDT)
Sun Apr 23 2017 00:00:00 GMT-0700 (PDT)

为什么date1在17:00显示为22日?

1 个答案:

答案 0 :(得分:2)

JavaScript的Date解析行为有点不可靠。看来当你给它一个ISO 8601字符串如“2017-04-23”时,它会将日期解释为你自己的时区,但是当你给它一个任意字符串时,它会把它解释为UTC日期。

由于您处于GMT-7时区,因此在世界自然基准会时间的第22天<17> 世界第二十二日,当您打印出日期对象时,它将始终打印出来UTC日期而非本地化日期。

因此,总而言之,两个日期都在00:00设置为23日,但在不同的时区。第一个设置为4月23日00:00 UTC-7,第二个设置为4月23日00:00 UTC。

始终明确设置时区以避免这种歧义可能是一个好主意。