第5章 日付と時刻の新たな API : 問題 3 : TemporalAdjuster
問題
Predicate<LocalDate>
を受け取りTemporalAdjuster
を返すnext
メソッドを実装せよ
戻り値のTemporalAdjuster
は、翌日以降でPredicate
を満たす日付を生成する
例えば
today.with(next(w -> w.getDayOfWeek().getValue() < 6))
は、今日より後の最初の平日の日付を返す
解答
public static TemporalAdjuster next(Predicate<LocalDate> pred) { return t -> { LocalDate w = (LocalDate)t; do { w = w.plusDays(1); } while (!pred.test(w)); return w; }; }
■ 検証用コード
LocalDate today = LocalDate.now(); LocalDate weekday = today.with(next(w -> w.getDayOfWeek().getValue() < 6)); System.out.println(weekday);
TemporalAdjuster
って便利ですね