今天在工作中遇到一个需求,页面上可以填写多个开始,结束时间段,但提交时不能有重复交叉的情况,一开始网上搜了一下,也没找到方便的方法,就自己想了想写了个,代码如下:
<script>
function compareDate(){
let begin = ['2015-01-02 10:01:38','2015-01-04 09:28:12','2015-01-11 01:37:13'];
let over = ['2015-01-04 10:27:21','2015-01-09 21:28:13','2015-01-16 10:22:23'];
begin = begin.sort();
over = over.sort();
for(let i = 1; i < begin.length; i++){
if (begin[i] <= over[i-1]){
alert("时间有重复!");
return false;
}
}
alert("时间没有重复!");
return true;
}
</script>
基本的思路,日期也可以当成字符串进行比较,把开始日期,结束日期分别存进两个数组,并用sort排序,循环遍历数组,从开始时间的第二个元素去比较结束时间的第一个元素,如果小于,就代表时间段有交叉,直接跳出,不然就继续遍历,遍历结束,说明时间没有重复,可以提交。