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的形式而有所不同?
我看不出这是如何与时区相关的,因为两个日期都以当地时区显示,而且它们的值明显不相等。
答案 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
来避免头痛。