Javascript for循环与日期

时间:2014-02-18 23:47:40

标签: javascript date for-loop infinite-loop infinite

我试图在一个月内每天迭代,但我的for循环被卡住(进入无限模式):

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循环参数的所有单独部分都按预期工作。如果我用“&lt;”替换“&lt; =”在这种情况下,循环也会运行,但是过早停止。

有人知道是什么可能将这个循环推向无穷大吗?我很无能......

2 个答案:

答案 0 :(得分:3)

日期对象不能超过该月的最后一天setDate。它始终小于或等于最大getDate()值。

答案 1 :(得分: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月2日到3月4日之间的日期。