js验证两个日期是否是同一个年月,并计算天数差


/**
* 将日期转化为 yyyy-MM 格式 。
* 帮助验证 两个时间要在同一个年月份
* @param dateStr
*/
function formatYearMonth(b_date){
    var b_date_year = b_date.getYear();
    var b_date_month = b_date.getMonth()+1;

    if(b_date_month < 10){
        b_date_month = "0" + b_date_month ;
    }
    return b_date_year +""+ b_date_month;
}

function getDateSub(date_b,date_e){

    // 下面的一定要有,否则就会但会一个NaN
    var b_date  = new Date(Date.parse(date_b.replace(/-/g,'/')));
    var e_date  = new Date(Date.parse(date_e.replace(/-/g,'/')));

    var b_year_month = formatYearMonth(b_date);
    var e_year_month = formatYearMonth(e_date);

    if(b_year_month != e_year_month){
        alert("请保持停场开始日期和结束日期在同一个月份之内。");
        return -1 ;
    }
    return  parseInt(Math.abs((e_date-b_date)/86400000)) + 1 ;
}

/**
* 验证停场开始日期到结束日期一定是同一个月
*/
function validateDate(){
    var date_b = form.BEGIN_DATE.value;
    var date_e = form.END_DATE.value;
    // 验证日期格式
    if(!isDate(date_b)){
        alert("停场开始日期不是有效日期yyyy-mm-dd。");
        return false;
    }
    if(!isDate(date_e)){
        alert("停场结束日期不是有效日期yyyy-mm-dd。");
        return false
    }

    if (date_b > date_e){
        alert("停场开始日期的起始时间不能晚于结束时间");
        return false;
    }

    // 开始计算 两个日期差值(1-31一共是31 天,而不是 30 天。)
    var dateSub  = getDateSub(date_b,date_e);
    if(dateSub == -1){
        return false ;
    }

    form.TC_DAYS.value = dateSub ;

    return true ;

}

生命的意义在于勇敢,错过,悔恨,真实之后的 风轻云淡。
原文地址:https://www.cnblogs.com/safely-pointer/p/4269646.html