我使用了setMonth(),实现了获取当前月份以前的12个月的月份,测试后没有问题。代码如下:
for ( var i = 0; i < 12; i++)
{
var d = new Date();
d.setMonth(d.getMonth()-i);
var y = d.getFullYear();
var m = d.getMonth() + 1;
m = (m < 10 ? "0" + m:m);
var newDate = y + "-" + m;
}
但是偶然一天登上系统,发现获取到的这些月份不对了,获取到的月份为2018-07,2018-07,2018-05,2018-05,2018-03,2018-03.....,百思不得其解。后来查询资料获知,在31号的时候,使用setMonth()方法会出问题,我看下日期确实是31号。然后我采用了在使用setMonth()方法前,先设置日期的方式,即在d.setMonth(d.getMonth()-i)这句之前加上d.setDate(1),成功解决问题。