Pythonで今日が祝日なのかどうか判定する方法を備忘録もかねて書いておきます。

タイトルの「今日が祝日かどうか判定する方法」だけを知りたい方は「今日が祝日かどうか判定する」という項目からお読みください。

使うモジュール

  • datetime
  • jpholiday

まず、pipで jpholiday というモジュールをインストールします。

shell
1
pip install jpholiday

これでモジュールの準備は完了です。

jpholiday の使い方

まずは、基本的な使い方をマスターしていきましょう。

ちなみに、jpholiday のGitHubリポジトリはこちら です。

指定した日付の祝日名を取得

あらかじめ指定した日付の祝日名を取得します。

python
1
2
3
4
5
6
7
8
import datetime
import jpholiday

# 2020年1月1日の祝日名を取得する
holiday_name = jpholiday.is_holiday_name(datetime.date(2020, 1, 1))

# 祝日名を出力
print(holiday_name)
output
1
元日

指定した日付が1月1日ですので、出力結果は「元日」となります。非常に簡単です。

祝日ではない日付を指定した場合はどうなるのでしょうか。

python
1
2
3
4
5
6
7
8
import datetime
import jpholiday

# 2020年1月5日の祝日名を取得する
holiday_name = jpholiday.is_holiday_name(datetime.date(2020, 1, 5))

# 祝日名を出力
print(holiday_name)
output
1
None

出力結果は None になります。

指定した日付が祝日かどうか判定する

先ほどは祝日の名前(元日など)を取得するプログラムでしたが、今度は祝日かどうかを判定するプログラムを書いてみましょう。

といっても、先ほどのプログラムとほとんど変わりません。非常にシンプルなモジュールです。

2020年1月1日が祝日かどうか判定してみましょう。

python
1
2
3
4
5
6
7
8
import datetime
import jpholiday

# 2020年1月1日は祝日かどうか判定する
holiday = jpholiday.is_holiday(datetime.date(2020, 1, 1))

# 祝日の有無を出力
print(holiday)
output
1
True

1月1日は祝日ですので、出力結果は True になります。

1月5日など、祝日でない場合の出力結果は False になります。

指定範囲の祝日を取得する

指定年、指定月、任意の指定範囲の祝日を取得するプログラムを書いてみます。

python
1
2
3
4
5
6
7
8
import datetime
import jpholiday

# 2020年の祝日一覧を取得
holiday_year = jpholiday.year_holidays(2020)

# 祝日一覧を出力
print(holiday_year)

2020年の祝日一覧が出力されれば成功です。

python
1
2
3
4
5
6
7
8
import datetime
import jpholiday

# 2020年5月の祝日一覧を取得
holiday_month = jpholiday.month_holidays(2020, 5)

# 祝日一覧を出力
print(holiday_month)

2020年5月の祝日一覧が出力されれば成功です。

python
1
2
3
4
5
6
7
8
import datetime
import jpholiday

# 2019年から2020年までの祝日一覧を取得
holidays = jpholiday.holidays(datetime.date(2019, 1, 1), datetime.date(2020, 12, 31))

# 祝日一覧を出力
print(holidays)

これで2019年から2020年までの祝日がすべて出力されれば成功です。

今日が祝日かどうか判定する

さて、本題です。今日が祝日かどうか判定するプログラムを書いてみます。

datetime と、先ほど解説した jpholiday の使い方を応用することで今日が祝日かどうか判定できるようになります。まあ、まずはサンプルソースを見てください。

python
1
2
3
4
5
6
7
8
import datetime
import jpholiday

# 今日が祝日かどうか判定する
holiday = jpholiday.is_holiday(datetime.date.today())

# 判定結果を出力
print(holiday)

とくに難しい事はありません。

「指定した日付が祝日かどうか判定する」という項目でやった内容を応用しただけです。

今日が祝日なら True 、今日が祝日でないなら False が出力されます。

今日が祝日かどうかで処理を分岐させる

今日が祝日なら「今日は休みだー!!」と喜ぶ、今日が祝日じゃないなら「今日は休みじゃない……」と落ち込むプログラムを書いてみます。

先ほどのコードをそのまま持ってきて、if文で条件分岐するだけの簡単なプログラムです。

python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
import datetime
import jpholiday

#今日が祝日かどうか判定する
holiday = jpholiday.is_holiday(datetime.date.today())

if holiday:
    print("今日は休みだー!!")
else:
    print("今日は休みじゃない……")

このようにすることで、祝日でない日の処理を決めることもできます。