Javascript 从当前月份开始以月份打印3年日历

Javascript 从当前月份开始以月份打印3年日历,javascript,Javascript,我用javascript获取当前日期,然后将其转换为当前月份。基于当前月份(现在是9),我想向后打印过去3年的月历。因此,如果我们有2013年9月,则必须打印以下内容: 08 09 10 11 12 2010 01 02 03 04 05 06 07 08 09 10 11 12 2011 01 02 03 04 05 06 07 08 09 10 11 12 2012 01 02 03 04 05 06 07 08 2013 我大致知道如何打印第一行,但我正在努力打印日历的其余部分。以下是我的

我用javascript获取当前日期,然后将其转换为当前月份。基于当前月份(现在是9),我想向后打印过去3年的月历。因此,如果我们有2013年9月,则必须打印以下内容:

08 09 10 11 12 2010

01 02 03 04 05 06 07 08 09 10 11 12 2011

01 02 03 04 05 06 07 08 09 10 11 12 2012

01 02 03 04 05 06 07 08 2013

我大致知道如何打印第一行,但我正在努力打印日历的其余部分。以下是我的第一行代码(2013年):

函数printCalendarRows(){ var d=新日期(); 变量n=(d.getMonth())+1; var 12=12; 对于(变量i=n;i=n;j--){ 控制台日志(i); 控制台日志(j); } } }
有什么建议吗?谢谢

检查这是否是您想要的

function printCalendarRows(){
        var d = new Date();
        var o = new Date();
        o.setMonth( (d.getMonth()) - 36); //or   o.setFullYear( (d.getFullYear()) - 3);
        var currnt;
        while (o < d)
        {
          currnt = o.getMonth();
          console.log(currnt);
          if (currnt == 11)
          {
             console.log(o.getFullYear());
          }
          o.setMonth(currnt+1);

        }
        if (d.getMonth() != 11)
        {
           console.log(d.getFullYear());
        }
        alert("Date:"+ d + "Month:" + d.getMonth());
}
函数printCalendarRows(){ var d=新日期(); var o=新日期(); o、 setMonth((d.getMonth())-36);//或o.setFullYear((d.getFullYear())-3); var电流; while(o我会使用:

这里有一个

或者,如果愿意,也可以不在循环中指定新的日期对象

function calRows() {
    var date,
        now = new Date(),
        first = new Date(now.getFullYear(), now.getMonth() -37, 1),
        monthYear = [first.getMonth(),first.getFullYear()]
        str = "";

    for (var i = -37;i++;) {
        month = ("0" + (++monthYear[0])).slice(-2);
        str += month + " " + (+month % 12 == 0 ? (monthYear[0]=0,monthYear[1]++) + "\n" : "")
    }

    return str + monthYear[1]
}

只是在JSFIDLE上检查了一下,它不工作了。。。所以我们这里有两个不同的日期。这是今年的第二个吗?这是我的控制台输出8 9 10 11 2010 0 1 2 3 4 5 6 7 8 9 10 11 2011 0 1 2 3 4 6 8 9 10 11 2012 0 1 2 3 4 5 6 6 7 2013。你拿到这个了吗?没有。似乎我对console.log有问题。它甚至没有在我的浏览器上打印语句。谢谢你,伙计!请检查我的更新代码。你的小提琴有我的旧代码是的,它现在可以完美地作为警报。我不知道console.log或其他任何东西有什么问题。谢谢你,我的朋友,你的帮助。上一次选举为什么要升级?我确实在循环中设置了
now=newdate()
,这根本没有任何意义。
function printCalendarRows(){
    var d = moment().subtract('months', 37);
    var y = d.format("YYYY");
    var n = moment().format("MM/YYYY");
    var log = "";
    while(d.format("MM/YYYY") != n) {
        if (d.format("YYYY") != y) {
            console.log(log + y + "\r\n");
            y = d.format("YYYY");
            log = "";
        }
        log += d.format("MM") + " ";
        d = d.add("months", 1);
    }
    console.log(log + d.format("YYYY"));
}

printCalendarRows();
function calRows() {
    var date,
        now = new Date(),
        str = "";

    for (var i = -37;i++;) {       
        date = new Date(now.getFullYear(), now.getMonth() + i - 1, 1)
        month = ("0" + (date.getMonth() + 1)).slice(-2);
        str += month + " " + (+month % 12 == 0 ? date.getFullYear() + "\n" : "")
    }

    return str + date.getFullYear();
}
console.log (calRows()) /*
08 09 10 11 12 2010
01 02 03 04 05 06 07 08 09 10 11 12 2011
01 02 03 04 05 06 07 08 09 10 11 12 2012
01 02 03 04 05 06 07 08 2013 */
function calRows() {
    var date,
        now = new Date(),
        first = new Date(now.getFullYear(), now.getMonth() -37, 1),
        monthYear = [first.getMonth(),first.getFullYear()]
        str = "";

    for (var i = -37;i++;) {
        month = ("0" + (++monthYear[0])).slice(-2);
        str += month + " " + (+month % 12 == 0 ? (monthYear[0]=0,monthYear[1]++) + "\n" : "")
    }

    return str + monthYear[1]
}