js如何比较两个日期之间相差数(天、时、分、秒)

首先,我们模拟一个例子

引入js文件

<script type="text/javascript"  src="jquery.min.js"></script>

html页面如下:

<body>
     <div>
        请输入第一个日期:<input type="date" id="Date1"  /> <br/>
        请输入第二个日期:<input type="date"  id="Date2" /> <br/>
        请输入日期相差数: <input type="text" id="differ"  />(参数:1:相差天数,2:相差小时数,3:相差分钟数,4:相差毫秒数) <br/>
        <input type="button" value="调用测试"  onclick="TestClick()" />
    </div>
</body>

js中的方法如下:

<script>
    //获取当前日期
    var getNowDate = function () {
        var d = new Date();
        var year = d.getFullYear();
        var month = d.getMonth() + 1;
        var day = d.getDate();
        var dateStr = year + '-' + getFormatDate(month) + '-' + getFormatDate(day);
        return dateStr;
    }
        
     //格式化日期的月份或天数的显示(小于10,在前面增加0)
    function getFormatDate(value) {
        var result;
        result = value < 10 ? ("0" + value) : value;
        return result;
    }
        
    //获取与毫秒数的转化比例(相差天数:1,相差小时数:2,相差分钟数:3,相差秒数:4)
    var getDifferScale = function (value) {
        var format;
        //获取转化比(天数跟毫秒数的比例)
        if (value == 1) {
            format = parseFloat(24 * 60 * 60 * 1000);
        }
            //获取转化比(小时数跟毫秒数的比例)
        else if (value == 2) {
            format = parseFloat(60 * 60 * 1000);
        }
            //获取转化比(分钟数跟毫秒数的比例)
        else if (value == 3) {
            format = parseFloat(60 * 1000);
        }
            //获取转化比(秒数跟毫秒数的比例)
        else if (value == 4) {
            format = parseFloat(1000);
        }
        return format;
    }
    
    //获取两个日期的相差日期数(differ 相差天数:1、相差小时数:2、相差分钟数:3、相差秒数:4)
    var getDifferDate = function (firstDate, secondDate, differ) {
        //1)将两个日期字符串转化为日期对象
        var startDate = new Date(firstDate);
        var endDate = new Date(secondDate);
        //2)计算两个日期相差的毫秒数
        var msecNum = endDate.getTime() - startDate.getTime();
        //3)计算两个日期相差的天数
        var dayNum = Math.floor(msecNum /getDifferScale(differ));
        return dayNum;
    }
    
    //测试方法
    var TestClick = function(){
        var date1 = $("#Date1").val();    
        var date2 = $("#Date2").val();    
        var differ = $("#differ").val();
        if(date1 == "" || date1==null){
            alert("第一个日期不能为空");    
        }
        else if(date2 == "" || date2==null){
            alert("第二个日期不能为空");    
        }
        else if(differ == "" || differ==null ){
            alert("日期相差数不能为空");    
        }
        var result = getDifferDate(date1,date2,differ);        
         console.log("输出结果:"+ result);
    }
        
</script>

注:原先测试是测试日期和当前日期比较,所以有前面两个方法(获取当前日期和格式化日期)

运行结果如图:

调用输出结果:

Ps: 两个日期比较,重要的是他们之间转化率(天与毫秒的转化,时与毫秒的转化,..等)和计算方法

posted @ 2018-01-11 16:33  小小邪  阅读(14768)  评论(0编辑  收藏  举报