js 判断多组时间段是否交叉重复

今天在工作中遇到一个需求,页面上可以填写多个开始,结束时间段,但提交时不能有重复交叉的情况,一开始网上搜了一下,也没找到方便的方法,就自己想了想写了个,代码如下:

    <script>                

        function compareDate(){
            var begin = ['2015-01-02 10:01:38','2015-01-04 09:28:12','2015-01-11 01:37:13'];
            var 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(i=1;i<begin.length;i++){
                if (begin[i] <= over[i-1]){
                    alert("时间有重复!");
                    return false;
                }
            }

            alert("时间没有重复!");
            return true;
        }
    </script>

基本的思路,日期也可以当成字符串进行比较,把开始日期,结束日期分别存进两个数组,并用sort排序,循环遍历数组,从开始时间的第二个元素去比较结束时间的第一个元素,如果小于,就代表时间段有交叉,直接跳出,不然就继续遍历,遍历结束,说明时间没有重复,可以提交。

没有更多推荐了,返回首页