1

我尝试获得警报,但由于某种原因,我无法获得最后一个警报来给我这段代码的差异,谁能解释为什么我没有得到结果?:

<!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>
4

2 回答 2

3

这段代码有几个问题:

  • Date不期望一个数组,这是什么parts1parts2是。只需使用startDateand endDate,它们是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());

这是一个在 context 中显示这些修复的小提琴

于 2013-10-29T21:08:29.897 回答
0

您犯了一个简单的错误。只需将减法线更改为下面的减法线即可。

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

当您获得标准格式的直接日期对象时,您应该直接减去这些对象。它只会为您提供两个日期之间的差异。

演示

于 2013-10-29T21:13:53.503 回答