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;


}

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值