js计算两个指定日期之间相差的月份
需求:如图实现下拉框显示指定月份到当月相差月份选项![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/984d96c191709b7bb0a48c8817803e09.png)
使用:
const monthArr = getMonths(new Date("2019-10-10"),new Date("2020-10-10"));
console.log(monthArr)
/*
[
{"label":"201910"},
{"label":"201911"},
{"label":"201912"},
{"label":"202001"},
{"label":"202002"},
{"label":"202003"},
{"label":"202004"},
{"label":"202005"},
{"label":"202006"},
{"label":"202007"},
{"label":"202008"},
{"label":"202009"}
]
*/
getMonths(startDate,endDate){
let startYear = startDate.getFullYear();
let startMonth = startDate.getMonth()+1;
let endYear = endDate.getFullYear();
let endMonth = endDate.getMonth()+1;
const months = [];
if(endYear > startYear){
for (let j = 0; j < (endYear-startYear); j++) {
let monthCount = endMonth + (12-startMonth);
for (let i = 0; i < monthCount; i++) {
let temp;
if(i<=(12-startMonth)){
temp = (startYear+j)+''+((startMonth+i)<10 ? '0'+(startMonth+i) : (startMonth+i));
}else if(i>(12-startMonth) && (startYear+j+1) === endYear){
const m = (i-(12-startMonth));
temp = endYear+''+(m<10 ?'0'+m : m);
}else{
continue;
}
months.push({'label':temp})
}
}
}else if(endYear === startYear){
let monthCount = endMonth-startMonth;
for (let i = 0; i < monthCount; i++) {
const temp = endYear+''+((startMonth+i) <10 ? '0'+(startMonth+i):(startMonth+i));
months.push({'label':temp})
}
}else{
alert("时间错误")
}
return months;
}