2017-05-02 79 views
4

我需要比較兩個不同的日期時間字符串(形成:YYYY-MM-DD'T'HH:mm)。JavaScript - 兩個時間字符串之間的差異

下面是日期時間字符串:

var a = ("2017-05-02T10:45"); 
var b = ("2017-05-02T12:15"); 

我切的日期了出來,所以我只需要的時間(形成的:HH:MM)。

var now = a.slice(11, 16); 
var then = b.slice(11, 16); 

// now = 10:45 
// then = 12:15 

有沒有什麼辦法可以得到這兩個時間的區別?

結果應該是這樣的:

1 hour 30 minutes 

此外,如果日期不同有沒有簡單的解決方案來獲得日期區別嗎?

+0

旁註/時間字符串,**不** **時間戳 – hindmost

+0

@最後謝謝,修正了標題 – IlariM

+0

我強烈建議您使用[Moment.js](https://momentjs.com/)來格式化日期/日期差異。 – hindmost

回答

0

這應該讓你開始:

d1 = new Date(Date.parse("2017-05-02T10:45")); 
 
d2 = new Date(Date.parse("2017-05-02T12:15")); 
 

 
var getDuration = function(d1, d2) { 
 
    d3 = new Date(d2 - d1); 
 
    d0 = new Date(0); 
 

 
    return { 
 
     getHours: function(){ 
 
      return d3.getHours() - d0.getHours(); 
 
     }, 
 
     getMinutes: function(){ 
 
      return d3.getMinutes() - d0.getMinutes(); 
 
     }, 
 
     getMilliseconds: function() { 
 
      return d3.getMilliseconds() - d0.getMilliseconds(); 
 
     }, 
 
     toString: function(){ 
 
      return this.getHours() + ":" + 
 
        this.getMinutes() + ":" + 
 
        this.getMilliseconds(); 
 
     }, 
 
    }; 
 
} 
 

 
diff = getDuration(d1, d2); 
 

 
console.log(diff.toString());

或使用momentjs因爲,1。這是很好的測試和錯誤跟蹤。 2.從頭開始編碼是一種有趣的學習體驗,但如果您處於公司環境中,從頭開始編碼會浪費時間(從而浪費金錢)。

+0

謝謝,這很好。 – IlariM

+0

不客氣。從頭開始編碼是一種有趣的學習體驗,但我真的建議你使用[newjs](http://momentjs.com/) – mika

+0

'new Date(Date.parse(「2017-05-02T10:45」))'是相同的到'新日期(「2017-05-02T10:45」)',只需輸入更多內容。如果持續時間大於24小時,這也會失敗。最好以毫秒爲單位獲得差值,然後手動轉換爲所需的時間格式。 – RobG

3

使用JavaScript日期:

var a = ("2017-05-02T10:45"); 
var b = ("2017-05-02T12:15"); 
var milliseconds = ((new Date(a)) - (new Date(b))); 

var minutes = milliseconds/(60000);