两个日期之间的Javascript实现天数差异

两个日期之间的Javascript实现天数差异,javascript,Javascript,我尝试获取警报,但由于某些原因,我无法获取最后一个警报,以提供与此代码的差异。有人能解释为什么我无法获得结果吗 <!DOCTYPE HTML> <html> <body> <input type="date" id="a"> <input type="date" id="b"> <input type="submit" id="c" onclick="getValue()"> <script> fun

我尝试获取警报,但由于某些原因,我无法获取最后一个警报,以提供与此代码的差异。有人能解释为什么我无法获得结果吗

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

函数getValue(){
var startDate=document.getElementById(“a”).value;
var endDate=document.getElementById(“b”).value;
var parts1=开始日期分割('-');
var parts2=endDate.split('-');
var date1=新日期(第1部分);
var date2=新日期(第2部分);
var差异=数学Abs(零件1-零件2);
差异=parseInt(差异/86400000);
警惕(差异);
}

此代码存在一些问题:

  • Date
    不需要数组,而
    parts1
    parts2
    就是数组。只需使用
    startDate
    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())


.

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

var difference = Math.abs(date1 - date2);
由于您得到的是标准格式的直接日期对象,所以您应该直接减去这些对象。它只会告诉你两个日期之间的差异


好吧,实际上并不期望
数组作为参数。而且,
Array
s的减法不太好(
parts1-parts2
)。在您的小提琴中,这不是您对原始代码所做的唯一更改。您将
Math.Abs
更改为
parseInt
——它应该包含一个10的基本参数——如果
date2
date1
之后,它将返回负数。可以减去标准日期对象。而Math.Abs()只是一个打字错误。投反对票是没有道理的。我没有投你反对票;我只是指出这不是你唯一的改变。使用
getTime
更加明确;当你减去两个
Date
对象时,它被隐式转换为毫秒,所以我认为最好显示出来。我的错误。错过数学课。abs()。无论如何,希望它现在能工作。OP已经做了所有的事情,只是做了简单的更改。请参阅我的评论@codeSpy的答案,你接受了为什么
getTime
更好,即使减去
Date
对象可以在你的浏览器中工作。