簡體   English   中英

從當前月份開始的月份中打印3年日歷

[英]Printing 3 year calendar in months staring from the current month

我在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年)的代碼:

function printCalendarRows(){
        var d = new Date();
        var n = (d.getMonth()) + 1;
        var twelve = 12;
        for(var i = n; i <= 12; i++){
            for(var j = 12; j >= n; j--){
                console.log(i);
                console.log(j);
            }
        }
}    

有什么建議嗎? 謝謝

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 */

這是小提琴

或者,如果願意,也可以在循環中不分配新的Date對象的情況下進行相同操作。

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]
}

檢查這是否是您想要的

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());
}

我會使用momentjs

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();

工作演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM