2013-10-29 98 views
1

我试图得到警报,但由于某种原因,我不能得到最后的警报,让我从这段代码的差异任何人都可以解释为什么我没有得到结果? :Javascript日期差异在2日期之间的天

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

好了,['Date'构造(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date)并没有真正指望的'数组'作为参数。而且,'数组'不会很好地减去('parts1 - parts2')。 –

回答

0

您正在犯一个简单的错误。简单地用下面的一个改变减法线。

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

正如你所得到的标准格式的直接Date对象,所以你应该直接减去那些对象。它只会给你两个日期之间的差异。

Demo

+0

它不是给你区别吗? –

+0

在你的小提琴中,这不是你对原始代码所作的唯一改变。您将'Math.Abs​​'改为'parseInt' - 其中应该包含10的基本参数 - 如果'date2'在'date1'之后,则返回负数。 –

+0

可以减去标准日期对象。而Math.Abs​​()只是一个错字。这是没有意义的投票。它的工作原理是 –

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

+0

getTime()是“缺少的链接”非常感谢你。 – PythonNewbie

+0

查看我的评论@ codeSpy的回答是,您接受了为什么'getTime'更好,即使在您的浏览器中减去'Date'对象。 –