2015-12-15 28 views
-2

這是一個非常常見的問題,但我無法找到正確的答案。我有以下幾點:像這樣正確的方法來獲取JavaScript日期對象之間的區別

tcom 
Mon Dec 14 2015 12:22:28 GMT-0500 (PET) 
treq 
Mon Dec 14 2015 12:18:27 GMT-0500 (PET) 

tcom - treq 
241122 
tdif = new Date(tcom - treq); 
Wed Dec 31 1969 19:04:01 GMT-0500 (PET) 

我已經看到了答案:Get difference between 2 dates in javascript?但是這是一個固定的方法,我不知道事先如果差將是天,小時,分鐘或秒。

謝謝

+0

'tcom - treq' <---這是兩個日期之間的差異。有什麼問題嗎? – zerkms

+1

那麼'241122' ms *是*這兩個日期時間的差別。你究竟在問什麼? – Bergi

+1

http://stackoverflow.com/q/17732897/1048572的副本,http://stackoverflow.com/q/18623783/1048572或其他 – Bergi

回答

0

你將返回一個不同的毫秒數,所以在這裏做一些數學計算。 1天= 24×60×60×10 = 864000毫秒。

+0

「1天= 24 x 60 x 60 x 10 = 864000毫秒」 - - 除非不是 – zerkms

0

是的,減去兩個Date對象是以毫秒爲單位的正確方法。

以下是等價的:

date1 - date2 
date1.getTime() - date2.getTime() 

如果你想將結果轉換爲年,月,日,等,你可以用毫秒部分設置爲偏移時代創建一個新的Date對象你已經獲得。例如: -

var start = new Date(); 

// some time passes... 

var end = new Date(); 

var elapsedMillis = end - start; 

var elapsed = new Date(1970, 0, 1, 0, 0, 0, elapsedMillis); 

然後你可以使用方法如getMinutes()getSeconds()等得到你想要的組件。

0

如果你想獲得的差異許多不同的單位的,你可以使用一個函數,它接受一個枚舉值,如:

var Units = { 
    MS: 1, 
    SEC: 1000, 
    MIN: 1000 * 60, 
    HOUR: 1000 * 60 * 60, 
    DAY: 1000 * 60 * 60 * 24, 
    YEAR: 1000 * 60 * 60 * 24 * 365 
}; 

function getDateDiff(a, b, unit) { 
    return (a - b)/unit; 
} 

然後你就可以輕鬆地把它叫做:

getDateDiff(date1, date2, Units.HOUR); 

如果你只在ms需要它,那麼簡單的減法就是你最好的朋友。

相關問題