2012-11-02 104 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