2012-02-24 11 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

1

DateTimeオブジェクトを使用することをお勧めします。

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

次に、数学を使用して、6pmの秒数を見つけることができます。 18時間* 60分* 60秒= 64800秒。

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

私はあなたはそれが8本、当日の午前の時間ではなく、特定の日だった場合伝えるために必要と想定。

1

これは少しハードコードさとpcalcaoの答えは、おそらく、より柔軟である:1日の時間は正午から6時間である場合にも確認することができ

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

if(Math.abs(timeOfDay - 43200) >= 21600) // first or last 6 hours of day. 
関連する問題