两个日期区间的所有时间

获取两个日期区间的所有时间

let start = "2018-12-06"; let end = "2019-11-06";

返回两个日期区间的所有时间

let start = "2018-12-06";
let end = "2019-11-06";

function getYearMonthStr(time) {
    if (!time) return;
    
    let yearNum, mouthNum;
    const timeArr = time.split("-");
    const month = timeArr[1];
    yearNum = timeArr[0];
    if (Number(month) < 10 && month.length == 2) {
        mouthNum = month.split("")[1]
    } else {
        mouthNum = month

    }
    return [yearNum, mouthNum]
}

function getTimeArr(startTime, endTime) {
    let mouthCount;
    let timeArr = [];
    let yearMission = endTime[0] - startTime[0];//年差
    let mouthMission = endTime[1] - startTime[1];//月插

    if (yearMission > 0 && mouthMission >= 0) {// 如果年差月差同时大于0说明年分不用减一
        mouthCount = yearMission * 12 + mouthMission;
    } else if (yearMission == 0 && mouthMission >= 0) { //年差大于零只保存月差
        mouthCount = mouthMission;
    } else if (yearMission < 0 || (yearMission == 0 && mouthMission < 0)) { //结束时间大于开始时间
        console.log("结束时间大于开始时间");
        return;
    } else {
        mouthCount = (yearMission - 1) * 12 + (12 - Math.abs(mouthMission));
    }
    let startYear = Number(startTime[0]);
    let startMouth = Number(startTime[1]) - 1;
    let previousMouth = startMouth;//记录上个月
    for (let i = 0; i <= mouthCount; i++) {
        if (previousMouth == 12) {//12进1
            startYear = startYear + 1;
            startMouth = 1;
        } else {
            startMouth = startMouth + 1;
        }
        previousMouth = startMouth;

        timeArr.push(`${startYear}-${startMouth}`)

    }
    return timeArr;
}

console.log(getTimeArr(getYearMonthStr(start), getYearMonthStr(end)));
// [ '2018-12',
//   '2019-1',
//   '2019-2',
//   '2019-3',
//   '2019-4',
//   '2019-5',
//   '2019-6',
//   '2019-7',
//   '2019-8',
//   '2019-9',
//   '2019-10',
//   '2019-11' ]
Comments
  • Latest
  • Oldest
  • Hottest
Powered by Waline v2.15.5