时间段重复校验-js

来源:互联网 发布:s7总决赛现场数据 编辑:程序博客网 时间:2024/04/30 09:20

今天项目有一个需求,就是校验用户保存的时间段,不能与已有的时间段交叉重复,一开始觉得很复杂。后面冷静下来发现其实很简单。用反向思维。

1、获取用户要保存的开始时间和结束时间

2、获取已有的时间段数据

3、遍历时间段数据,分别与用户保存的开始时间和结束时间对比。

对比方案:

①:开始时间和结束时间不能与已有的时间段有交集

②:开始时间和结束时间不能把已有的时间段包含在内。

有了思路,代码就简单了。

      /*验证生效时间段是否重复*/    function vaildEffectDateArray(formObj){        var effectDate=formObj.findField("effectDate").getValue();        var loseEffectDate=formObj.findField("loseEffectDate").getValue();        if(effectDateArray.length>0){            for(var i=0;i<effectDateArray.length;i++){                var tmp=effectDateArray[i];                var startDate=tmp.startDate;                var endDate=tmp.endDate;                if(typeof startDate =='undefined' || typeof endDate == 'undefined') continue;                if((effectDate>=startDate&&effectDate<=endDate)||(loseEffectDate>=startDate&&loseEffectDate<=endDate)){                    //生效时间和失效时间与已有的时间段有交集                    return false;                }                if(effectDate<=startDate&&loseEffectDate>=endDate){                    //生效时间和失效时间把已有的时间段包含在内                    return false;                }            }        }        return true;    }