这是我的两个代码:
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 :(得分: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。
始终明确设置时区以避免这种歧义可能是一个好主意。