日期(日期字符串)构造函数不一致

Date(dateString) constructor inconsistent?

本文关键字:日期 不一致 构造函数 字符串      更新时间:2023-09-26
a = new Date('09-01-2013')
//Sun Sep 01 2013 00:00:00 GMT-0400 (EDT)
b = new Date('2013-09-01')
//Sat Aug 31 2013 20:00:00 GMT-0400 (EDT)
b < a
//true

我在 Node.js repl,v0.10.12 中这样做

了为什么日期根据

日期字符串的形式而不同?

我看不出这与时区有何关系,因为这两个日期都以本地时区显示,并且它们的值显然不等效。

问题是new Date('09-01-2013')new Date('2013-09-01')使用不同的格式/标准,因此解析方式不同。

new Date('09-01-2013')将按预期进行分析,并生成午夜时间(以本地时区)。但是,new Date('2013-09-01')在UTC午夜解析为ISO-8601日期,UTC午夜在显示时会转换为您的本地时区(在本例中为EDT,反映在20:00:00中,相差4小时)。

结论:使用YYYY/MM/DD以避免头痛。