如何基于当前月份获取带年份的过去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
相关产品推荐
相关产品推荐

