vue根据日期段获取重叠部分

 // 获取日期数组中最大的日期
      getDateMax(dataArr) {

        let max = dataArr[0];

        for (let i = 1; i < dataArr.length; i++) {

          if (Date.parse(dataArr[i]) > Date.parse(max)) {

            max = dataArr[i]

          }

        }

        return max

      },
      // 获取日期数组中最小的日期
      getDateMin(dataArr) {

        let min = dataArr[0];

        for (let i = 1; i < dataArr.length; i++) {

          if (Date.parse(dataArr[i]) < Date.parse(min)) {

            min = dataArr[i]

          }

        }

        return min

      },

getAll(begin, end) {
var ab = begin.split("-");
var ae = end.split("-");
var db = new Date();
db.setUTCFullYear(ab[0], ab[1] - 1, ab[2]);
var de = new Date();
de.setUTCFullYear(ae[0], ae[1] - 1, ae[2]);
var unixDb = db.getTime();
var unixDe = de.getTime();
for (var k = unixDb; k <= unixDe;) {

k = k + 24 * 60 * 60 * 1000;
},

 

      // 获取重叠日期函数
      isDadeOverlap(startDateArr,endDateArr,valueDate){
        let me = this;
        let minD = me.getDateMin(startDateArr)
        let maxD = me.getDateMax(endDateArr)
       
        let dateRange = me.getAll(minD,maxD);
       
        let sI = null
        let sE = null
        if(dateRange.indexOf(valueDate[0])!=-1){
          sI = dateRange.indexOf(valueDate[0])
        }
        if(dateRange.indexOf(valueDate[1])!=-1){
          sE = dateRange.indexOf(valueDate[1])
        }
        if( sI!==null && sE!==null ){
          return me.getAll(dateRange[sI],dateRange[sE]).join(',')
        }
        if( sI!==null && sE === null ){
          return me.getAll(dateRange[sI],dateRange[dateRange.length-1]).join(',')
        }
        if( sI === null && sE!==null ){
          return me.getAll(dateRange[0],dateRange[sE]).join(',')
        }
        if(Date.parse(valueDate[0]) < Date.parse(minD) && Date.parse(valueDate[1]) > Date.parse(maxD)){
          return dateRange.join(',')
        }
        return null
      }
 
调用
    let sd = ["2022-02-23","2022-02-24"]
    let se = ["2022-03-31","2022-04-02"]
    // 参数1:开始日期数组   参数2:结束日期数组  参数3:所选的值开始结束范围
    let d = me.isDadeOverlap(sd,se,['2022-02-02','2022-04-04'])
    console.log(d)
posted @ 2023-06-12 11:42  孙同学你好  阅读(78)  评论(0)    收藏  举报