毎日を日曜日にする

2 min read読了の目安(約2500字

japan-holidaysを使うと祝日の一覧を簡単に取得できます。
例えば2021年7〜8月中の祝日ならこう

import com.samuraism.holidays.日本の祝休日;

import java.time.LocalDate;

public class Example {
    public static void main(String[] args) {
        日本の祝休日 holidays = new 日本の祝休日();
        holidays.get指定期間内の祝休日️(LocalDate.of(2021, 7, 1)
                , LocalDate.of(2021, 8, 31))
                .forEach(e -> System.out.println(e.日付 + ": " + e.名称));
    }
}

実行結果:

2021-07-22: 海の日
2021-07-23: スポーツの日
2021-08-08: 山の日
2021-08-09: 休日

ちなみに2022年7〜8月だとこう

2022-07-18: 海の日
2022-08-11: 山の日

今年は開催されるかもしれないオリンピックのため、通常10月の第二月曜日のスポーツの日(旧体育の日)が7月23日にずらされています。
そして山の日は通常8月11日ですが、オリンピックの閉会式翌日である8月9日を休日にしたいということでずらされています。長崎に原爆が落とされた日を祝日にするのはよろしくないということで8月8日(日曜日)にずらし、9日が振替休日になるようにしたそうです。
法律ベースの祝休日のアルゴリズムは日本の祝休日アルゴリズム.javaにコードで表されているので興味があればご覧ください。

さて2021年6月中の祝日はどうでしょうか?

import com.samuraism.holidays.日本の祝休日;

import java.time.LocalDate;

public class Example {
    public static void main(String[] args) {
        日本の祝休日 holidays = new 日本の祝休日();
        holidays.get指定期間内の祝休日️(LocalDate.of(2021, 6, 1)
                , LocalDate.of(2021, 6, 30))
                .forEach(e -> System.out.println(e.日付 + ": " + e.名称));
    }
}

実行結果:

……ですよね。のび太も嘆いていましたが、6月は祝日がありません。

では毎日を日曜日にしてみましょう!add祝休日メソッドで固定の、またはロジックベースの休日を追加できます。
ロジックベースで定義する場合は、ラムダで渡されるLocalDateが祝日に該当するときはその名称をString型で返すだけです。

import com.samuraism.holidays.日本の祝休日;

import java.time.LocalDate;

public class Example {
    public static void main(String[] args) {
        日本の祝休日 holidays = new 日本の祝休日().
                add祝休日(date -> "日曜日");
        holidays.get指定期間内の祝休日️(LocalDate.of(2021, 6, 1)
                , LocalDate.of(2021, 6, 30))
                .forEach(e -> System.out.println(e.日付 + ": " + e.名称));
    }
}

実行結果:

2021-06-01: 日曜日
2021-06-02: 日曜日
2021-06-03: 日曜日
2021-06-04: 日曜日
2021-06-05: 日曜日
2021-06-06: 日曜日
2021-06-07: 日曜日
2021-06-08: 日曜日
2021-06-09: 日曜日
2021-06-10: 日曜日
2021-06-11: 日曜日
2021-06-12: 日曜日
2021-06-13: 日曜日
2021-06-14: 日曜日
2021-06-15: 日曜日
2021-06-16: 日曜日
2021-06-17: 日曜日
2021-06-18: 日曜日
2021-06-19: 日曜日
2021-06-20: 日曜日
2021-06-21: 日曜日
2021-06-22: 日曜日
2021-06-23: 日曜日
2021-06-24: 日曜日
2021-06-25: 日曜日
2021-06-26: 日曜日
2021-06-27: 日曜日
2021-06-28: 日曜日
2021-06-29: 日曜日
2021-06-30: 日曜日

はい、毎日が日曜日になりました!のび太も大喜び。

是非japan-holidaysで色々と遊んでみてください。