我目前正在使用js Date函数进行分配-docs

我注意到当我遍历月份时,2015年2月似乎丢失了。

我不确定为什么,下面是我正在运行的代码:

function test(){
    var current = new Date(Date.now())
    , start     = new Date(current.getFullYear(), current.getMonth() , 0)
    , end       = new Date();

    end.setMonth(start.getMonth() + 24);

    while(start < end){
        var year        = start.getFullYear()
        , month         = start.getMonth()
        , next          = "";

        document.write(month + "<br />");

        next = start.setMonth(start.getMonth() + 1);
        start = new Date(next);
    }

}

test();


这是我设置了http://jsfiddle.net/4bGmH/的jsfiddle

任何帮助将不胜感激,谢谢。

最佳答案

这是因为,如果不为setMonth指定date参数,它将使用getDatesee the docs)中的值。您开始时将小提琴中的日期值设置为30(由于创建日期时使用“ 0”值),因此错过了较短的2月。仅包括第二个2月,因为跳过第一个2月时getDate值设置为1。尝试:

next = start.setMonth(start.getMonth() + 1, 1);
// instead of
next = start.setMonth(start.getMonth() + 1);


要么

, start     = new Date(current.getFullYear(), current.getMonth() , 1)
// instead of
, start     = new Date(current.getFullYear(), current.getMonth() , 0)

10-05 20:29