js 获取当前月份前后12个月

岳小威子
2023-02-24 / 183 个字 / 0 评论 / 48 阅读 / 加载耗时:33ms / 正在检测是否收录...
温馨提示:
本文最后更新于2023年02月24日,已超过666天没有更新,若内容或图片失效,请留言反馈。

1、获取当前月份的【后】12个月,获取最近的12个月

var dataArr = [];
var data = new Date();
var year = data.getFullYear();
data.setMonth(data.getMonth() - 1, 1) //获取到当前月份,设置月份
for (var i = 0; i < 12; i++) {
    data.setMonth(data.getMonth() + 1); //每次循环一次 月份值加1
    var m = data.getMonth() + 1;
    m = m < 10 ? "0" + m : m;
    dataArr.push(data.getFullYear() + "-" + (m))
}

console.log(dataArr)
//["2019-11", "2019-12", "2020-01", "2020-02", "2020-03", "2020-04", "2020-05", "2020-06", "2020-07", "2020-08", "2020-09", "2020-10"]

2、获取当前月份的【前】12个月,获取最近的12个月

var dataArr = [];
var data = new Date();
var year = data.getFullYear();
data.setMonth(data.getMonth()+1, 1)//获取到当前月份,设置月份
for (var i = 0; i < 12; i++) {
    data.setMonth(data.getMonth() - 1);//每次循环一次 月份值减1
    var m = data.getMonth() + 1;
    m = m < 10 ? "0" + m : m;
    dataArr.push(data.getFullYear() + "-" + (m))
}
console.log(dataArr);
// ["2019-11", "2019-10", "2019-09", "2019-08", "2019-07", "2019-06", "2019-05", "2019-04", "2019-03", "2019-02", "2019-01", "2018-12"]

释疑

  1. JS的Date.setMonth()方法坑【可能存在的问题】:在业务寻找问题的时候,测试输出date.format('yyyy-MM-dd'),看到的值为2019-03-01。从2019-03-01中我发现了原因,是因为2019-02-29此天不存在,故输出2019-03-01,这才导致了输出2019-03的问题。正确设置上个月份的的方式应该为date.setMonth(date.getMonth()-1,1);使用setMonth(month,date)来进行修改,而不是使用setMonth(month)方法,避免出现此类问题。
  2. getYear()方法取出时 结果为 119//(2019-1900=119)

文章到这里就结束了

您在本文章已经停留了大概
喜欢的话就点个赞吧!或着请我喝个冰可乐,我就太感谢你了!


0
打赏
拜谢打赏(☆ω☆)

感谢老板,老板大气。。

评论 (0)

取消