哦,Javascript……🙄
刚刚偶然发现了这颗小宝石。
new Date('2018-01-01')
<- Sun Dec 31 2017 18:00:00 GMT-0600 (Central Standard Time)
new Date('2018/01/01')
<- Mon Jan 01 2018 00:00:00 GMT-0600 (Central Standard Time)
我认为发生这种情况的原因是 JS 将第一个日期解析为 ISO 8601 格式。由于未指定时区偏移量,因此它假定为 UTC。但是,JavaScript 只会以本地时间创建日期。因此,应用本地时区后,日期是前一天下午 6 点。
第二个使用了/
分隔符,所以它不会触发 ISO 解析分支。相反,它合理地假设我感兴趣的是当前时区的日期。