2013-10-07 69 views
37

我得到了兩個Date對象,我想計算小時之差。如何獲得兩個日期對象之間的小時差異?

如果小時差小於18小時,我想將日期對象推入數組中。

Javascript/jQuery,其實並不重要;最好的做法是什麼。

+7

此問題未在http://stackoverflow.com/questions/3224834/get-difference-between-2-dates-in-javascript中回答。 OP特別說:獲得小時(不是天)。 –

回答

105

最簡單的方法是直接從相互減去日期對象。

例如:

var hours = Math.abs(date1 - date2)/36e5; 

減法返回以毫秒爲單位的兩個日期之間的差。 36e560*60*1000的科學計數法,將毫秒差值轉換爲小時數。

+22

我的工程師寧願看到'3.6e6'([normalized scientific notation](http://en.wikipedia.org/wiki/Scientific_notation))而不是'36e5'。然而,這本書讀者會喜歡'360000'。 – Blazemonger

+8

給他自己的。 – Boaz

+0

這個簡短的工作代碼謝謝Boaz –

3

用你得到的時間戳的日期對象上調用valueOf

var diff = date2.valueOf() - date1.valueOf(); 
var diffInHours = diff/1000/60/60; // Convert milliseconds to hours 
21

嘗試使用getTimemdn doc):

var diff = Math.abs(date1.getTime() - date2.getTime())/3600000; 
if (diff < 18) { /* do something */ } 

使用Math.abs()我們不知道哪個日期是最小的。此代碼可能更相關:

var diff = (date1 - date2)/3600000; 
if (diff < 18) { array.push(date1); } 
相關問題