2013-10-29 131 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'對象。 –