js两个日期比较相差多少天实例

JavaScript016

js两个日期比较相差多少天实例,第1张

你好,

首先来分析一个问题,两个日期是什么格式的?假设是字符串格式:

可能是:2018/04/20,也可能是:2018/04/20 12:00:00

那接下来分情况讨论。

首先看看不含时间部分的日期格式计算:

var aDate = new Date('2018/04/23') // 通过日期字符串,初始化第一个日期对象

var bDate = new Date('2018/04/25') // 同上,初始化第二个日期对象

var aDay = 24 * 60 * 60 * 1000 // 完整一天有24小时,将小时换算成毫秒时间戳

var diffDay = (bDate - aDate) / aDay // 计算间隔天数(注意日期隐式转换)

console.log(diffDay) // 2,23日-25日间隔2天

然后再来看看包含时间部分的日期格式计算:

var aDate = new Date('2018/04/23')

var bDate = new Date('2018/04/25 12:00:00') // 包含时间的日期字符串

var aDay = 24 * 60 * 60 * 1000

var diffDay = (bDate - aDate) / aDay

console.log(diffDay) // 2.5,自然计算的结果

console.log(Math.floor(diffDay)) // 2,根据个人情况向下取整,整数天

console.log(Math.ceil(diffDay)) // 3,根据个人情况向上取整,整数天

希望是你想要的结果,如有疑问请追问。

完整代码如下:

<html>

<head>

    <title>js 两个日期间隔月数</title>

    <script type="text/javascript">

        window.onload = function () {

            document.getElementById("btn_Diff").onclick = function () {

                var d1 = document.getElementById("txt_Date1").value//日期1

                var d2 = document.getElementById("txt_Date2").value//日期2

                //年*12+月

                var m1 = parseInt(d1.split("-")[1].replace(/^0+/, "")) + parseInt(d1.split("-")[0]) * 12

                var m2 = parseInt(d2.split("-")[1].replace(/^0+/, "")) + parseInt(d2.split("-")[0]) * 12

                alert(m2-m1)

            }

        }

       

    </script>

</head>

<body>

    <input id="txt_Date1" type="text" value="2013-09-25"/>

    <input id="txt_Date2" type="text" value="2014-01-15"/>

    <input id="btn_Diff" type="button" value="Diff"/>

</body>

</html>

效果如下:

var days = daysBetween('2016-11-01','2016-11-02')

/**

* 根据两个日期,判断相差天数

* @param sDate1 开始日期 如:2016-11-01

* @param sDate2 结束日期 如:2016-11-02

* @returns {number} 返回相差天数

*/

function daysBetween(sDate1,sDate2){

//Date.parse() 解析一个日期时间字符串,并返回1970/1/1 午夜距离该日期时间的毫秒数

var time1 = Date.parse(new Date(sDate1))

var time2 = Date.parse(new Date(sDate2))

var nDays = Math.abs(parseInt((time2 - time1)/1000/3600/24))

return nDays

}