这是我的两个代码:
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
显示为 22 号 17:00?
JavaScript 的Date
解析行为有些不可靠。似乎当您给它一个 ISO 8601 字符串(例如“2017-04-23”)时,它会将日期解释为您自己的时区,但是当您给它一个任意字符串时,它会将其解释为 UTC 日期。
由于您处于 GMT-7 时区,因此 22 日 17:00 在 UTC 中是 23 日 00:00,当您打印日期对象时,它总是会打印出来UTC 日期而不是本地化日期。
因此,总而言之,两个日期都设置为 23 日 00:00,但在不同的时区。第一个设置为 4 月 23 日 00:00 UTC-7,第二个设置为 4 月 23 日 00:00 UTC。
为了避免这种歧义,始终明确设置时区可能是个好主意。