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;

        

    }

  • 相关阅读:
    idea 从svn导入项目遇到的错误
    用sql语句处理字符串以逗号截开分别获取值
    tree grid 实现编辑保存然后整体存入数据库
    EasyUI的TreeGrid的json格式,树状图显示问题
    vue.js--菜鸟级入门
    Django3.0知识笔记——WSGI&ASGI是什么?
    open stack
    shell脚本简介及常用文本编辑命令
    shell脚本之变量与运算符
    shell编程之流程控制(for、while、case、break、continue)
  • 原文地址:https://www.cnblogs.com/pansly/p/2158892.html
Copyright © 2011-2022 走看看