0
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 中做到了这一点

为什么日期会根据 dateString 的形式而有所不同?

我看不出这与时区有什么关系,因为两个日期都显示在本地时区,而且它们的值显然不相等。

4

1 回答 1

1

问题是使用不同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:004 小时差中)。

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

于 2013-09-04T20:30:17.870 回答