などの JSR-310 オブジェクトが与えられた場合LocalDate
、どうすれば次の水曜日 (またはその他の曜日) の日付を見つけることができますか?
LocalDate today = LocalDate.now();
LocalDate nextWed = ???
答えは、「次の水曜日」の定義によって異なります;-)
JSR-310 は、TemporalAdjustersクラスを使用して 2 つのオプションを提供します。
最初のオプションはnext()です:
LocalDate input = LocalDate.now();
LocalDate nextWed = input.with(TemporalAdjusters.next(DayOfWeek.WEDNESDAY));
2 番目のオプションはnextOrSame()です。
LocalDate input = LocalDate.now();
LocalDate nextWed = input.with(TemporalAdjusters.nextOrSame(DayOfWeek.WEDNESDAY));
入力日付が何曜日かによって、両者は異なります。
入力日付が 2014-01-22 (水曜日) の場合:
next()
1 週間後に 2014-01-29 に戻りますnextOrSame()
入力と同じ 2014-01-22 を返します入力日付が 2014-01-20 (月曜日) の場合:
next()
2014-01-22 を返しますnextOrSame()
2014-01-22 を返しますすなわち。next()
は常に後の日付を返しますが、nextOrSame()
一致する場合は入力日付を返します。
どちらのオプションも、静的インポートを使用すると見栄えがよくなることに注意してください。
LocalDate nextWed1 = input.with(next(WEDNESDAY));
LocalDate nextWed2 = input.with(nextOrSame(WEDNESDAY));
TemporalAdjusters
マッチングprevious()
とpreviousOrSame()
メソッドも含まれます。