gpt4 book ai didi

javascript - 从当前月份开始以月为单位打印 3 年日历

转载 作者:行者123 更新时间:2023-11-30 05:44:13 25 4
gpt4 key购买 nike

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

这是一个 Fiddle

或者,如果您愿意,也可以不在循环中分配新的 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]
}

关于javascript - 从当前月份开始以月为单位打印 3 年日历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18892869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com