两个日期之间的Javascript实施差异

时间:2013-10-29 20:59:11

标签: javascript

我试图获得警报但由于某种原因,我无法得到最后一个警报给我这个代码的差异可以任何人解释为什么我没有得到结果? :

<!DOCTYPE HTML>
<html>
<body>

<input type="date" id="a"> 
<input type="date" id="b">
<input type="submit" id="c" onclick="getValue()">
<script>
    function getValue(){
        var startDate = document.getElementById("a").value;
        var endDate = document.getElementById("b").value;

        var parts1 = startDate.split('-'); 
        var parts2 = endDate.split('-');

        var date1 = new Date(parts1);
        var date2 = new Date(parts2);

        var difference = Math.Abs(parts1 - parts2);
        difference = parseInt(difference / 86400000);

        alert(difference);
    }
</script>


</body>
</html>

2 个答案:

答案 0 :(得分:3)

此代码存在一些问题:

  • Date不期望数组,parts1parts2。只需使用startDateendDate,它们是Date期望格式的日期字符串。看起来Date构造函数确实采用了一个数组并将其参数视为单独传递,但它没有必要:

    > new Date(['2013', '10', '29']);
    Tue Oct 29 2013 00:00:00 GMT-0500 (CDT)
    
  • Math.Abs不存在; Math.abs是您正在寻找的。

  • 在日期对象上使用getTime()对其进行数学运算:Math.abs(date1.getTime() - date2.getTime());

Here's a fiddle to show these fixes in context

答案 1 :(得分:0)

你犯了一个简单的错误。用下面的方法改变减法线。

var difference = Math.abs(date1 - date2);

当您以标准格式获取直接日期对象时,应该直接减去这些对象。它只会给你两个日期之间的区别。

Demo