You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于当前月份获取带年份的过去12个月?

获取带年份的过去12个月解决方案

嘿,我来帮你搞定这个需求!你的原代码是从当前月份开始往后生成12个月,但没处理年份,而且方向和你要的“过去12个月”正好相反。咱们来调整一下:

首先,核心需要解决两个问题:

  • 反转月份的生成方向(从往前推而不是往后加)
  • 跟踪年份变化,跨年度时自动更新年份

修改后的基础代码(包含当前月的过去12个月)

var theMonths = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
var today = new Date();
var aMonth = today.getMonth();
var aYear = today.getFullYear(); // 新增年份变量,初始为当前年份
var i;

// 循环生成过去12个月
for (i = 0; i < 12; i++) {
    // 输出月份+年份的组合
    document.writeln(`${theMonths[aMonth]} ${aYear}<br>`);
    // 往前推一个月
    aMonth--;
    // 处理跨年情况:如果月份变成-1(即当前是1月,往前推就是去年12月)
    if (aMonth < 0) {
        aMonth = 11; // 切换到12月
        aYear--; // 年份减1
    }
}

如果你需要从上个月开始算过去12个月

比如当前是2024年5月,你想显示2023年5月到2024年4月,只需要在循环前先往前推一个月:

var theMonths = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
var today = new Date();
var aMonth = today.getMonth();
var aYear = today.getFullYear();
var i;

// 先切换到上个月,再开始循环
aMonth--;
if (aMonth < 0) {
    aMonth = 11;
    aYear--;
}

for (i = 0; i < 12; i++) {
    document.writeln(`${theMonths[aMonth]} ${aYear}<br>`);
    aMonth--;
    if (aMonth < 0) {
        aMonth = 11;
        aYear--;
    }
}

关键改动说明

  • 新增aYear变量来跟踪年份,确保跨年度时能正确显示对应的年份
  • 将原代码的aMonth++改为aMonth--,实现“往前取过去的月份”
  • 新增了月份越界(小于0)时的处理逻辑:重置为12月,同时年份减1

内容的提问来源于stack exchange,提问作者Test1234

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:31:31