今回は、jpholidayを使って、祝日の判定方法や祝日に関する操作を説明していきたいと思います。
正式ドキュメントはこちらにありますが、もう少し細かい処理を加えて分かりやすく説明出来ていけたらなと思います。
インストール方法
まずは、実行環境で以下のコマンドを実行してjpholidayをインストールします。
pip install jpholiday
祝日の判定と祝日名の取得
サンプルソース
3行目 jphと言う名前でjpholidayをインポートします。
5行目 1から9(10より小さい)までをループします。
7行目 is_holiday(date)で祝日の判定を行います。祝日であればTrueを異なればFalseを返します。
8行目 is_holiday_name(date)で祝日の名前を取得します。祝日でない場合はNoneが返ります。
9行目 printで結果を出力します。対象日付はstrftime()を使ってyyyy/mm/dd形式に変換します。
参考記事
【Python】for文の回数を指定する方法(range)
実行結果

実行結果は以下のとおりで、祝日である5月3日、5月4日、5月5日はTrueで祝日名が表示されています。
それ以外は、FalseでNoneとなっています。
datetimeでも正しく判定が可能
以下のようにdatetimeでも正しく判定ができます。
実行結果は、以下になります。

指定年月で祝日を取得する
サンプルソース
jpholidayは祝日判定や指定日の祝日名の取得のほかに、
年間の祝日の取得や月単位の祝日取得も可能です。
その場合は、以下のサンプルソースのようにyear_holidays()、month_holidays()を使います。
year_holidays(年) 指定した年の祝日を配列として返す
month_holidays(年, 月) 指定した年月の祝日を配列として返す
実行結果
結果が見切れたので、ループでprintしていますが、正しく祝日が表示されています。

指定範囲の祝日を取得
jpholidayでは、年月以外にもfromとto指定で祝日の取得が出来ます。
その場合は、between(from, to)を使います。
サンプルソースでは、dateで記述していますが、datetimeでも動作します。
実行結果は以下のようにbetweenを使っても指定範囲で祝日を取得できます。

独自の祝日の追加と削除
こちらでは、独自の祝日の追加方法と削除方法のサンプルソースを記載します。
スポンサーリンク
独自の休暇を追加したい場合は、サンプルソースの6行目「TestHoliday1」のようにclassを追加します。
また、独自の祝日の削除は33行目のように「jph.OriginalHoliday.unregister(追加したクラス)」で削除できます。
実行結果は以下のように1回目は追加した休日
「特別休暇1」と「特別休暇2」が表示されています。
「特別休暇1」を削除した35行目以降のprintでは、正しく特別休暇1が削除されています。
注意点として、追加するclass一つに一つの定義しないと削除するときに正しく処理されないので気をつけてください。
