2014-02-18 59 views
4

我每天都在努力遍歷一個月,循環,但我的for循環卡住(陷入無盡模式):的Javascript與日期

var today = new Date(); 
var numberOfDaysInMonth = new Date(today.getFullYear(), lastMonth, 0).getDate(); 

... 

for (var date = new Date(today.getFullYear(), lastMonth, 1); date.getDate() <= numberOfDaysInMonth; date.setDate(date.getDate()+1)) { 

... 

所有的for循環參數的單獨部分工作如預期。如果我在環路也運行的情況下將「< =」替換爲「<」,但課程停止得太早。

有人有什麼想法可以將這個循環驅動到無限?我無能爲力...

回答

1
date.setDate(date.getDate()+1) 

當date.setDate(31 + 1)被調用時,一天被重置爲0,每月由1前進,因爲這是「下一個」日期。

相反,循環是這樣的:

var begin = new Date("4 februari 2014"); 
var end = new Date("4 march 2014"); 

for (;begin < end; begin.setDate(begin.getDate()+1)) { 
    console.log(begin); 
} 

這將顯示4個februari和3月4日之間的日期。

+0

哈哈,謝謝!這聽起來很合邏輯,我覺得很愚蠢。但它的作品!所以再次感謝你! – user3325748

3

日期對象不能setDate超過本月的最後一天。它總是小於或等於最大值getDate()