EasyUI: 前端js验证开始时间不能大于结束时间,且时间跨度不超过3个月

function time() {
    //YYYY-MM-DD格式
    var dateBeginStr = $("#id1").find('input').combobox('getText');
    var dateEndStr = $("#id2").find('input').combobox('getText');
    
    //时间正则:YYYY-MM-DD
    var regex = /^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$/;

    //匹配正则
    if (!regex.test(dateBeginStr) || !regex.test(dateEndStr)) {
        return false;
    }

    /**
     * 校验日期范围,开始时间不能大于结束时间
     */
    if (dateBeginStr !== '' && dateEndStr !== '') {
        var dateBegin = new Date(dateBeginStr.replace(/\-/g, "\/"));
        var dateEnd = new Date(dateEndStr.replace(/\-/g, "\/"));
        if (dateBegin > dateEnd) {
            return false;
        }
    }
    
    /**
     * 统计周期不能超过3个月 的验证
     */
    //年
    var startYear = dateBeginStr.substr(0,4);
    var endYear = dateEndStr.substr(0,4);
    //月
    var startMonth =  dateBeginStr.substr(5,2);
    var endMonth =  dateEndStr.substr(5,2);
    //日
    var startDay = dateBeginStr.substr(8,2);
    var endDay = dateEndStr.substr(8,2);
    
    var flag = true;
    if (startYear === endYear) {
        //同年
        if (endMonth - startMonth > 3) {
            flag = false;
        } else if (endMonth - startMonth == 3) {
        	if(endDay > startDay){ //结束日期的日大于开始日期的日
                flag = false;
            }
        }
    } else {
        if(endYear - startYear > 1){//大于1至少超过一年了,直接返回false
            flag = false;
        }else if(endYear - startYear == 1){
            if(startMonth < 10){ //开始年的月份小于10时,不需要跨年
                flag = false;
            }else if((parseInt(startMonth)+3) - endMonth < 12){ //月相隔大于3个月
                flag = false;
            }else if((parseInt(startMonth)+3) - endMonth == 12){ //月相隔3个月,比较日
                if(endDay > startDay){ //结束日期的日大于开始日期的日
                    flag = false;
                }
            }
        }
    }
    if(!flag){
        return false;
    }
    
    return true;


}

 

你可能感兴趣的:(前端,SublimeService,js,EasyUI)