使用Javascript计算时间差和计算日期加天数后的日期值

给客户演示系统回来后,用户对以前的一个系统提出了一些在界面上需要完善的建议,其中有一个是使页面中的汇报日期=填发日期+有效期.填发日期是取系统时间,汇报日期可以修改,有效期可以修改,任意改其中一个都应该能使另一个变成正确的。今天下班后不想回去呢,就在网上找相应的例子,结果都不适用,根本就没有把闰年和月份的天数考虑进去,只好自己来写了。现在把代码也贴上来,跟大家共享。

 

 

//判断年份是否是闰年

function isLeapYear(year){

    

    if(year%400==0){

        return false;    

    }else if(year%4==0){

        return true;

    }else{

        return false;

    }

}

//计算两个日期的差值

function compareDate(date1,date2)

{

    var regexp=/^(\d{1,4})[-|\.]{1}(\d{1,2})[-|\.]{1}(\d{1,2})$/;

    var monthDays=[0,3,0,1,0,1,0,0,1,0,0,1];

    regexp.test(date1);

    var date1Year=RegExp.$1;

    var date1Month=RegExp.$2;

    var date1Day=RegExp.$3;

    regexp.test(date2);

    var date2Year=RegExp.$1;

    var date2Month=RegExp.$2;

    var date2Day=RegExp.$3;

    firstDate=new Date(date1Year,date1Month,date1Day);

    secondDate=new Date(date2Year,date2Month,date2Day);

    result=Math.floor((secondDate.getTime()-firstDate.getTime())/(1000*3600*24));

    for(j=date1Year;j<=date2Year;j++){

        if(isLeapYear(j)){

            monthDays[1]=2;

        }else{

            monthDays[1]=3;

        }

        for(i=date1Month-1;i<date2Month;i++){

            result=result-monthDays[i];

        }

    }

    return result;

}

//计算日期加上天数后的日期

function addDays(date1,days){

    var monthDays=[0,3,0,1,0,1,0,0,1,0,0,1];

    var regexp=/^(\d{1,4})[-|\.]{1}(\d{1,2})[-|\.]{1}(\d{1,2})$/;

    regexp.test(date1);

    var date1Year=RegExp.$1;

    var date1Month=RegExp.$2;

    var date1Day=RegExp.$3;

    firstDate=new Date(date1Year,date1Month,date1Day);

    firstDate.setTime(firstDate.getTime()+days*1000*3600*24);

    var diff=0;

    for(j=date1Year;j<=firstDate.getYear();j++){

        if(isLeapYear(j)){

            monthDays[1]=2;

        }else{

            monthDays[1]=3;

        }

        for(i=date1Month-1;i<firstDate.getMonth()-1;i++){

            diff=diff+monthDays[i];

        }

    }

    result=firstDate.getYear()+"-"+firstDate.getMonth()+"-"+firstDate.getDate();

    if(diff!=0){

        result=addDays(result,diff);

    }

    return result;

    

}

posted @ 2011-08-29 21:45  pansly  阅读(783)  评论(0编辑  收藏  举报