2014-04-24 162 views
0

我一直在嘗試做一個函數來計算兩個時間戳之間的時間差,例如。Javascript - 兩個日期之間的時間

Ex1: 23-04-2014 08:00:00 
Ex2: 24-04-2014 12:56:40 

我在部分研究後部分成功,但我不知道如何在幾小時內計算日子。

因此,如果你理解我的意思,我不想要x天,那麼函數應該計算超過24小時。

代碼

$(document).ready(function() {  
    function calculateTime() { 
      var valuestart = "08:48:30"; 
      var valuestop = "17:56:37"; 

      var hourStart = new Date("01/01/2014 " + valuestart).getHours(); 
      var hourEnd = new Date("01/01/20014 " + valuestop).getHours(); 
      var hourDiff = hourEnd - hourStart; 

      var minStart = new Date("01/01/20014 " + valuestart).getMinutes(); 
      var minEnd = new Date("01/01/20014 " + valuestop).getMinutes(); 
      var minDiff = minEnd - minStart; 

      var secStart = new Date("01/01/20014 " + valuestart).getSeconds(); 
      var secEnd = new Date("01/01/20014 " + valuestop).getSeconds(); 
      var secDiff = secEnd - secStart; 

     if (hourDiff < 10) hourDiff = "0" + hourDiff; 
     if (minDiff < 10) minDiff = "0" + minDiff; 
     if (secDiff < 10) secDiff = "0" + secDiff; 

     $("p").html("<b>Time difference:</b> " + hourDiff + ":" + minDiff + ":" + secDiff)    

    } 
    calculateTime(); 
    }); 

這裏是我的小提琴:http://jsfiddle.net/Ma4sb/

+3

您可以相互減去兩個Date對象並以毫秒爲單位獲取結果。然後只需轉換爲小時。 –

+4

SO不喜歡指向圖書館的答案,但你應該真正檢查出moment.js。 –

+0

@JoeFrambach我不介意這樣的答案,只要他們不忽略所提出的問題/代碼(即解釋爲什麼當前代碼不起作用,以及如何解決這個問題是對答案的要求) 。也就是說,我持有相反的觀點:「SO不喜歡*問題*要求圖書館」 – user2864740

回答

1

試試這個,(假設你的結束日期是一個錯字):

$(document).ready(function() {  
    function calculateTime() { 
     var valuestart = "08:48:30"; 
     var valuestop = "17:56:37"; 

     var dateStart = new Date("01/01/2014 " + valuestart); 
     var dateEnd = new Date("01/01/2014 " + valuestop); 
     var secDiff = (dateEnd - dateStart)/1000; // in seconds. 

     var hourDiff = Math.floor(secDiff/(60 * 60)); 

     secDiff -= hourDiff * 60 * 60; 

     var minDiff = Math.floor(secDiff/60); 
     secDiff -= minDiff * 60; 


     if (hourDiff < 10) hourDiff = "0" + hourDiff; 
     if (minDiff < 10) minDiff = "0" + minDiff; 
     if (secDiff < 10) secDiff = "0" + secDiff; 

     $("p").html("<b>Time difference:</b> " + hourDiff + ":" + minDiff + ":" + secDiff)    

    } 
    calculateTime(); 
}); 

http://jsfiddle.net/Ma4sb/2/

所以,例如,如果我們將dateEnd移動到01/02/2014,你會看到:

Time difference: 33:08:07 

我覺得是你想要的。如果不是,則可以通過將小時數除以24來輕鬆地將其轉換爲日期。

+0

這正是我想要的! – Niels

相關問題