2009-09-28 29 views
4

如果我不知道哪個對象早於另一個對象,那麼告訴一個對象是否在另一個對象的4小時內的最佳方式是什麼?我如何判斷一個約會時間的DateTime對象是否在另一個約4小時內?

Joda時間持續時間對象似乎很好地完成了這項工作,如果我知道對象A出現在對象B之前,但是因爲持續時間已經簽名,所以如果我不知道順序,它似乎不會做我想要的。

似乎會有一個簡單的方法來做到這一點,但我還沒有找到它。

回答

9

只需使用Hours類這樣的:

Hours h = Hours.hoursBetween(date1, date2); 
int hours = h.getHours(); 
+0

完美!正是我在找什麼。 – emmby 2009-09-28 22:24:24

+1

我注意到了這個小警告。場景1:(時間1 = 4:00:00)和(時間2 = 8:00:00)。這給你4小時 - 這裏沒有問題。然而,在情景2(時間1 = 4:00:00)和(時間2 = 8:30:00)中,如果時間間隔實際上是4小時30分鐘,您仍然可以使用4小時 - 這超出了您的時間範圍。你可能會得到一個額外的(不需要的)小時。 – 2010-02-26 21:22:17

+0

我注意到這個問題關於流逝的時間:http://stackoverflow.com/questions/2179644/how-to-calculate-elapsed-time-from-now-with-joda-time – 2010-02-26 21:27:42

0

您可以使用兩個DateTime對象上的compareTo()方法來告訴哪個更早,然後使用Duration來查看它們是否在4小時內。

+0

感謝mR_fr0g,一個也能正常工作,當然,但同樣的,似乎有點笨拙。 – emmby 2009-09-28 22:23:48

0

嘗試以下操作:

if (Math.abs(new Duration(start, end).getStandardSeconds()) < 4 * 3600) { 
    // blah blah blah 
} 
+0

是的,這當然很好,但它似乎有點笨拙 – emmby 2009-09-28 22:22:31

相關問題