2012-11-02 169 views
1

我有一个JavaScript日期比较的问题。我为10月31日创建了一个Date对象,而11月1日创建了另一个Date对象,但每个getTime()返回相同的数字,并且大于/小于运算符也将日期视为相等。这里是我的代码:JavaScript日期比较奇数

d1 = new Date(2012, 10, 31, 0, 0, 0, 0); 
d2 = new Date(2012, 11, 1, 0, 0, 0, 0); 
document.write(d1.getTime() + "<br />"); 
document.write(d2.getTime() + "<br />"); 
document.write((d1 < d2) + "<br />"); 
document.write((d1 > d2) + "<br />"); 

,这里是输出:

1354320000000 
1354320000000 
false 
false 

相同的代码工作周围的其他月份的结局很好,它似乎只是导致问题的这两个日期。

任何帮助表示赞赏!

+3

提示:基于JavaScript的月份为零。 – j08691

回答

6

11月(10)没有31天,因此它将包装到12月(11)1st。

new Date(2012, 10, 31, 0, 0, 0, 0) 
//Sat Dec 01 2012 00:00:00 GMT+0200 (FLE Standard Time) 

//more wrapping: 
new Date(2012, 10, 35, 0, 0, 0, 0) 
//Wed Dec 05 2012 00:00:00 GMT+0200 (FLE Standard Time) 
+0

非常感谢,我忽略了将月份的零索引考虑在内。现在完美。 – user431931