zoukankan      html  css  js  c++  java
  • 使用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;

        

    }

  • 相关阅读:
    回文链表
    istringstream
    编写函数,以读模式打开一个文件,将其内容读入到一个string的vector中,将每一行作为一个对立的元素存于vector中
    c++ primer,友元函数上的一个例子(By Sybase)
    类的静态成员
    聚合类和字面值常量类
    隐式的类类型转换
    构造函数
    类的作用域
    类的其他特性
  • 原文地址:https://www.cnblogs.com/pansly/p/2158892.html
Copyright © 2011-2022 走看看