2012-03-07 2 views
13

DateTimeオブジェクトと比較する方法はありますかの場合の機能はありますか? EXのためにJava Joda Timeで "isBefore"を使用した日付のみの比較

。、

DateTime start = new DateTime(Long.parseLong(<someInput>)); 
DateTime end = new DateTime(Long.parseLong(<someInput>)); 

今私が行うとき、

while (start.isBefore(end)) { 
    // add start date to the list 
    start = start.plusDays(1); 
} 

それは私が何をしたいのに対し、同様考慮時間を考慮され、これは、(私のシナリオの)一貫性のない動作につながりますisBeforeを使って日付を比較するだけです。私はそれができる方法はありますか?

お知らせください。

ありがとうございます!

答えて

21

日付を比較したい場合は、DateTimeではなく、LocalDateクラスを使用します。

JodaTimeのドキュメントはかなり良いです:http://joda-time.sourceforge.net/apidocs/org/joda/time/LocalDate.html

+0

返事をありがとう。私は、DateTimeをLocalDateに変換してからLocalTimeをDateTimeに変換するのではなく、DateTimeをループ内に格納したいと思ったので、DateFormatterを使用することをお勧めします。 – test123

+1

夏時間に出入りするときに、奇妙な動作がないことを確認してください!日付と時刻は、最初に表示されるものよりもしばしばトリッキーです... –

+1

私のアプリケーションのユースケースを再評価したところ、LocalDateを使う方が良いと思われます。ありがとう! – test123

1

DateTimeではなくLocalDateを使用します。 JodaTimeのコンセプトは「部分的」です(ReadablePartialインターフェイスを参照)。

+0

返信いただきありがとうございます。私は、ループ内にのみDateTimeフォーマットを保存したかったのです。だから私はジョージが以下に示唆したものに固執すると思います。ありがとう! – test123

0

あなたが解析した後(真夜中を意味する)ゼロにDateTimeの時間を設定できます。

// withTime sets hours, minutes, seconds, milliseconds 
DateTime start = new DateTime(Long.parseLong(<someInput>)).withTime(0, 0, 0, 0); 
DateTime end = new DateTime(Long.parseLong(<someInput>)).withTime(0, 0, 0, 0); 

またはその他のジョダ時間クラスのいずれかを使用します; DateTimeよりはるかに多くのものがあります!日付のみを扱う場合は、DateTimeの代わりにLocalDateを使用します。

+0

返信いただきありがとうございます!私のアプリケーションをより詳しく見て、DateTimeの代わりにLocalDateに変更すると思います。ありがとう! – test123

+2

時刻を深夜に設定すると、タイムゾーンに深夜を含む夏時間のギャップがある場合は機能しません。 'dayOfMonth()。roundFloorCopy()'を呼び出すと、大文字小文字が処理されます。 – JodaStephen

8

もう1つの戦略は、それをフォーマットすることです。

DateFormat df = new SimpleDateFormat("MM/dd/yyyy"); 
DateTime newStart = df.parse(start); 
DateTime newEnd = df.parse(end); 

while (newStart.isBefore(newEnd)) { 
    // add start date to the list 
    newStart = newStart.plusDays(1); 
}  
+0

これは私の望むものに最も近いものです。提案に感謝します! – test123

+0

df.parseはDateTimeを受け入れません:-( – test123

+0

Try df.parse(start.toString()); – JCab

関連する問題