25

JodaTime2.1ライブラリを使用しています。

特定の日付がnotの日付範囲の間にあるかどうかを比較するメソッドを作成しました。開始日と終了日を含めてLocalDate欲しいのですが、時間部分だけを考えたくないので使ってきました。

以下はそのためのコードです。

isDateBetweenRange(LocalDate start,LocalDate end,LocalDate target){

       System.out.println("Start Date : "
              +start.toDateTimeAtStartOfDay(DateTimeZone.forID("EST"));

       System.out.println("Target Date : "
              +targettoDateTimeAtStartOfDay(DateTimeZone.forID("EST"));

       System.out.println("End Date : "
              +end.toDateTimeAtStartOfDay(DateTimeZone.forID("EST"));

       System.out.println(target.isAfter(start));

       System.out.println(target.isBefore(end));
}

上記のメソッドの出力は次のとおりです。

Start Date: 2012-11-20T00:00:00.000-05:00
Target Date: 2012-11-20T00:00:00.000-05:00
End Date : 2012-11-21T00:00:00.000-05:00
target.isAfter(start) : false
target.isBefore(end) : true

日付と値が同じであっても、私の問題はtarget.isAfter(start)falseです。targetstart

私はそれが欲しいのですtarget >= startが、ここではそれだけを考慮しtarget > startます。
包括的にしたい。

isAfterメソッドが排他的に一致を見つけることを意味しますか?

Joda Timeのjavadocを調べましたが、何も見つかりませんでした。

4

2 に答える 2

63

はい、isAfter排他的です。そうでない場合は、おそらく名前が付けられているisEqualOrAfterか、類似しているはずです。

解決策:「後」の代わりに「前ではない」を使用し、「前」の代わりに「後ではない」を使用します。

boolean isBetweenInclusive(LocalDate start, LocalDate end, LocalDate target) {
    return !target.isBefore(start) && !target.isAfter(end);
}
于 2012-11-27T12:12:26.277 に答える
2
于 2018-08-06T21:42:24.770 に答える