1

我想检查我的日期数组中发生的任何日期冲突。我有一个这样的数组。

[['2020-07-03T18:30:00.125000Z','2020-07-04T01:30:00Z'],['2020-07-03T18:30:00.125000Z','2020-07-04T00:30:00Z'],['2020-07-03T18:30:00.125000Z','2020-07-04T00:30:00Z']]

单个数组中的第一个日期分别是开始日期和结束日期。我想在这里检查的是,第一个数组日期与数组中的以下日期冲突。这样我就可以根据日期分配一个人。一个人可以分配一个日期时间。那么有人知道解决这个问题的完美 ES6 方法吗?

4

1 回答 1

0

我创建了一个函数来解决这个问题。dateTimes 是包含日期的数组。

checkDateTimeOverlap = (dateTimes)=>{
        let isOverlap = false;
        dateTimes.forEach((time,i) => {
            let  st1 = time[0];
            let  et1 = time[1];
          
            dateTimes.forEach((time2,j) => {               
                if(i != j){
                    let st2 = time2[0];
                    let et2 = time2[1];
                    if (st1 >= st2 && st1 <= et2 || et1 >= st2 && et1 <= et2 || st2 >= st1 && st2 <= et1 || et2 >= st1 && et2 <= et1) {
                        isOverlap =  true;
                    }else{
                        isOverlap =  false;
                    }
                }
            })
        }); 

        return isOverlap;
    }
于 2020-07-14T12:51:51.030 回答