Date(dateString)构造函数不一致?

时间:2013-09-04 20:18:51

标签: javascript node.js date

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的形式而有所不同?

我看不出这是如何与时区相关的,因为两个日期都以当地时区显示,而且它们的值明显不相等。

1 个答案:

答案 0 :(得分: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:00中,相差4小时)。

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