js 获取当前月份前12个月

时间:2019-12-10
本文章向大家介绍js 获取当前月份前12个月,主要包括js 获取当前月份前12个月使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

js 获取当前月份前12个月

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


释疑:①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)方法,避免出现此类问题。

②用 getYear()方法取出时 结果为 119     //(2019-1900=119)

原文地址:https://www.cnblogs.com/wn798/p/12016749.html