Python|祝日かどうかを判定する

1. はじめに

Pythonで日付を扱う際、「その日が祝日かどうか」を判定したい場面は多々あります。例えば、業務アプリケーションで営業日を判定したり、スケジューラーで祝日を自動で除外したりといった場面です。

本記事では、Pythonで祝日かどうかを判定する方法について、具体的なコード付きでわかりやすく解説します。初心者の方でもすぐに実践できるように、外部ライブラリ jpholiday を使って解説していきます。

祝日の判定ができるようになると、実務でも非常に便利です。たとえば、「休日を除いて業務日をカウントしたい」「カレンダーアプリを作りたい」といった場面で応用できます。

 

2. Pythonで祝日かどうかを判定する方法

2-1. jpholidayライブラリとは?

Pythonで日本の祝日を扱うには、jpholidayライブラリが便利です。このライブラリは、日本の国民の祝日や振替休日、国民の休日に対応しています。

2-2. ライブラリのインストール

まずは、以下のコマンドでjpholidayをインストールしましょう。

pip install jpholiday

2-3. 基本的な使い方

指定した日付が祝日かどうかを判定するには、jpholiday.is_holiday()関数を使います。

import jpholiday
import datetime

# 2025年1月1日(元日)が祝日か判定
date = datetime.date(2025, 1, 1)
print(jpholiday.is_holiday(date))

実行結果:

True

このように、Trueが返ってくれば、その日は祝日です。

2-4. 祝日名を取得する方法

祝日であれば、その名称(例:「元日」)も取得することができます。

holiday_name = jpholiday.is_holiday_name(date)
print(holiday_name)

実行結果:

元日

 

3. よくある使い方・応用例

3-1. 今日が祝日かどうかを判定する

以下のコードでは、今日が祝日かどうかを確認できます。

today = datetime.date.today()

if jpholiday.is_holiday(today):
    print("今日は祝日です。")
else:
    print("今日は平日です。")

実行結果:

今日は平日です。

※ 実行日が祝日であれば「祝日です」と表示されます。

3-2. 特定の月の日付をループして祝日一覧を表示する

以下の例では、2025年1月の祝日をすべて表示します。

from calendar import monthrange

year = 2025
month = 1
_, last_day = monthrange(year, month)

for day in range(1, last_day + 1):
    d = datetime.date(year, month, day)
    if jpholiday.is_holiday(d):
        print(f"{d} は {jpholiday.is_holiday_name(d)} です")

実行結果:

2025-01-01 は 元日 です
2025-01-13 は 成人の日 です

3-3. 土日と祝日をまとめて判定する

業務システムでは「稼働日」を管理することも多く、祝日だけでなく土日も含めた休暇判定が必要なことがあります。

def is_holiday_or_weekend(date):
    # 土曜(5)または日曜(6)または祝日なら休み
    return date.weekday() >= 5 or jpholiday.is_holiday(date)

test_date = datetime.date(2025, 1, 13)
print(is_holiday_or_weekend(test_date))

実行結果:

True

 

4. 注意点・エラー対策

4-1. 西暦範囲に注意

jpholidayが対応しているのは、主に2000年以降〜数年先までです。あまりに昔や未来の年には対応していない可能性があります。

4-2. インポート忘れに注意

datetimejpholidayのインポートを忘れるとNameErrorが出るので注意しましょう。

4-3. カスタム祝日には非対応

会社独自の休日や振替日は判定されません。必要があれば、独自ロジックを組み合わせて対応する必要があります。

 

5. まとめ

今回は、Pythonで祝日かどうかを判定する方法について解説しました。jpholidayライブラリを使うことで、簡単に祝日のチェックが可能になります。

  • 指定日が祝日かをis_holiday()で確認できる
  • 祝日名もis_holiday_name()で取得可能
  • 土日と合わせた稼働日判定にも応用可能

実務では、勤怠管理や予約システム、スケジュールアプリなどに活用できる知識です。ぜひ自分のプロジェクトにも取り入れてみてください。

タイトルとURLをコピーしました