2017-04-22 59 views
3

这是我的两个代码:为什么Javascript转换时间有所不同?

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

+0

我发现的答案在这里:http://stackoverflow.com/questions/7556591/javascript-date-object-always-one-day-off –

回答

2

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

既然你是在GMT-7时区,在17:00 22日为在UTC 00:00 23日,当你打印出日期对象,它总是会打印出UTC日期和不是本地化的日期。

所以,总的来说,这两个日期越来越设定为23日在00:00,但在不同的时区。第一个设置为4月23日00:00 UTC-7,第二个设置为UTC 4月23日00:00。

这可能是一个好主意,始终明确设置时区,以避免这种不确定性。

+1

你的意思是这是另一种方式:第一个字符串是00: 00 UTC,第二个是UTC-7的00:00。 (但是它们都以UTC-7打印)。同样,你的第一段也是错误的。 –

相关问题