2014年08月10日

jodaで直近の日曜を取得する

下記のような書き方ができる。

dt.withDayOfWeek(DateTimeConstants.SUNDAY)

dtが左だった場合、右に変換される。

7/26(Sun) → 7/27(Sun)
7/27(Sun) → 7/27(Sun)
7/28(Mon) → 8/03(Sun)
7/29(Tue) → 8/03(Sun)

前回の日曜日を取りたい、つまり7/28(Sun)なら7/27(Sun)を取りたい場合はどうするか。とりあえず1週減らして取ればいいか。

dt.minusWeeks(1).withDayOfWeek(DateTimeConstants.SUNDAY)

この場合、7/27(Sun)は7/20(Sun)になる。7/27→7/27にしたい場合は、6日減らす感じだろうか。

dt.minusDays(6).withDayOfWeek(DateTimeConstants.SUNDAY)

Java8のTime APIの場合はwithでTemporalAdjusters使うなど書き方が違う。けっこう面倒。