主页 > 人工智能  > 

js校验多个时间段的时间是否有交叉

js校验多个时间段的时间是否有交叉

参考博客: Java日期时间API系列37-----时间段是否有重叠(交集)的计算方法 Java 最优雅方式校验时间段重叠

判断是否有交叉数据

let timePeriod = [ { start: dateList[0].value, //时间段1的开始时间 时间格式为1130(代表11:30) end: dateList[1].value,//时间段1的结束时间 }, { start: dateList[2].value, //时间段2的开始时间 end: dateList[3].value,//时间段2的结束时间 }, { start: dateList[4].value, //时间段3的开始时间 end: dateList[5].value,//时间段3的结束时间 }, { start: dateList[6].value, //时间段4的开始时间 end: dateList[7].value,//时间段4的结束时间 }, { start: dateList[8].value, //时间段5的开始时间 end: dateList[9].value,//时间段5的结束时间 }, { start: dateList[10].value, //时间段6的开始时间 end: dateList[11].value,//时间段6的结束时间 }, ] // 先按开始时间排序(需要保证开始时间小于结束时间) timePeriod.sort((a, b) => { return a.start - b.start }) // 去除时间为空的时间段 let timePeriodValue = timePeriod.filter(item => item.start != "") || [] // 循环一遍,看有无交叉数据 for (let i = 1; i < timePeriodValue.length; i++) { // !(timePeriodValue[i - 1].end < timePeriodValue[i].start) 时间段交叉(严格) // 如果1030与1030不算交叉 则!(timePeriodValue[i - 1].end <=timePeriodValue[i].start) (非严格) if ( !timePeriodValue[i - 1].end < timePeriodValue[i].start ) { return callback(new Error("时间段不能交叉!") } }
标签:

js校验多个时间段的时间是否有交叉由讯客互联人工智能栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“js校验多个时间段的时间是否有交叉