2012-02-24 321 views
0

因此,我在一個應用程序中使用了JodaTime,並且需要一種方法來判斷當前時間是否在午夜6小時內。實際上,我需要知道時間是否在凌晨2點的8小時內,但JodaTime似乎在午夜提供了一個常數,所以我正在考慮這一點。無論如何,我已經嘗試了許多不同的東西,但沒有什麼效果。任何幫助或指針,將不勝感激。使用JodaTime快速判斷當前時間是否在午夜6小時內

回答

3

這可以簡單地通過使用JodaTime來完成,而不涉及任何數學問題。

DateTime time = new DateTime(DateTimeZone.UTC); 

Period period = new Period(time, time.plusDays(1).toDateMidnight()); 
System.out.println(period.getHours()); 

的time.plusDays(1).toDateMidnight()(是的,我是個懶人),是讓我的下一個午夜比較,而不是與今天的午夜(已通過)。

如果你想檢查前後兩者,只需檢查兩個時期。

+0

完美的作品,非常感謝。 – cardician 2012-02-24 17:34:44

1

我會建議使用DateTime對象。

DateTime date = new DateTime(); 
int i = getSecondOfDay(); 

然後用一個小數學,我們可以找到下午6點的數量。 18小時* 60分鐘* 60秒= 64800秒。

if (i > 64800){ 
    // Do what you need here 
} 

我認爲你需要知道這是當前8小時,而不是特定的一天。

1

這是一個有點硬編碼和pcalcao的答案很可能是更加靈活:

private static boolean isLessThan8HoursFrom2AM(DateTime date) { 
    return (date.getHourOfDay() >= 18 || date.getHourOfDay() < 10); 
} 
1

您還可以檢查是否一天中的時間是從中午6小時。

if(Math.abs(timeOfDay - 43200) >= 21600) // first or last 6 hours of day. 
相關問題