为什么Javascript转换时间不同?

为什么Javascript转换时间不同?,javascript,date,time,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号?JavaScript的Dat

这是我的两个代码:

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号?

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

由于您位于GMT-7时区,17:00的22日是UTC 00:00的23日,当您打印日期对象时,它将始终打印UTC日期,而不是本地化日期

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


为了避免这种歧义,最好总是明确地设置时区。

我找到的答案是:你的意思是相反的:第一个字符串是00:00 UTC,第二个是00:00 UTC-7。(但它们都以UTC-7格式打印。)同样,您的第一段也是错误的。