Pythonで今日が祝日なのかどうか判定する方法をご紹介いたします。
日本の祝日を扱う方法について、取り扱っているサイトが少なかったので、この記事でモジュールの使い方から応用まで、徹底的に解説します!
タイトルの「今日が祝日かどうか判定する方法」だけを知りたい方は「今日が祝日かどうか判定する」という項目からお読みください。
使うモジュール
- datetime
- jpholiday
まず、pipで「jpholiday」というモジュールをインストールします。
pip3 install jpholiday
Windowsの場合は「pip3」の「3」はいらないケースがほとんどだと思いますので、そのまま「pip install jpholiday」と入力します。これでモジュールの準備は完了です。
jpholidayの使い方
今回、メインで使うjpholidayというモジュールですが、日本人が作成したモジュールで、使い方も日本語で解説されています。
ですが、こちらには今日が祝日かどうか判定する方法が載っていなかったため、本記事で解説します。
まずは、基本的な使い方をマスターしていきましょう。「いや、もう知ってるから早く本題に入れ」という方は「今日が祝日かどうか判定する」という項目へ飛んでください。
指定した日付の祝日名を取得
あらかじめ指定した日付の祝日名を取得します。
import datetime
import jpholiday
# 2020年1月1日の祝日名を取得する
holiday_name = jpholiday.is_holiday_name(datetime.date(2020, 1, 1))
# 祝日名を出力
print(holiday_name)
指定した日付が1月1日ですので、出力結果は「元日」となります。非常に簡単です。
ちなみに、1月5日など祝日じゃない日を指定すると……
import datetime
import jpholiday
# 2020年1月5日の祝日名を取得する
holiday_name = jpholiday.is_holiday_name(datetime.date(2020, 1, 5))
# 祝日名を出力
print(holiday_name)
出力結果が「None」になります。個人的には出力結果がNoneにならない日が増えるといいのですが。笑
指定した日付が祝日かどうか判定する
先ほどは祝日の名前(元日など)を取得するプログラムでしたが、今度は祝日かどうかを判定するプログラムを書いてみましょう。と言っても、先ほどのプログラムとほとんど変わりません。本当にシンプルなモジュールです。
2020年1月1日が祝日かどうか判定してみましょう。
import datetime
import jpholiday
# 2020年1月1日は祝日かどうか判定する
holiday = jpholiday.is_holiday(datetime.date(2020, 1, 1))
# 祝日の有無を出力
print(holiday)
当然、1月1日は元日ですので祝日です。よって出力結果は「True」になります。
1月5日など、祝日でない場合の出力結果は「False」になります。
指定範囲の祝日を取得する
指定年、指定月、任意の指定範囲の祝日を取得するプログラムを書いてみます。
import datetime
import jpholiday
# 2020年の祝日一覧を取得
holiday_year = jpholiday.year_holidays(2020)
# 祝日一覧を出力
print(holiday_year)
2020年の祝日一覧が出力されれば成功です。
import datetime
import jpholiday
# 2020年5月の祝日一覧を取得
holiday_month = jpholiday.month_holidays(2020, 5)
# 祝日一覧を出力
print(holiday_month)
2020年5月の祝日一覧が出力されれば成功です。
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の使い方を応用することで今日が祝日かどうか判定できるようになります。まあ、まずはサンプルソースを見てください。
import datetime
import jpholiday
# 今日が祝日かどうか判定する
holiday = jpholiday.is_holiday(datetime.date.today())
# 判定結果を出力
print(holiday)
特に難しい事はありません。「指定した日付が祝日かどうか判定する」という項目でやった内容を応用しただけです。
今日が祝日なら「True」、今日が祝日でないなら「False」が出力されます。
今日が祝日かどうかで処理を分岐させる
今日が祝日なら「今日は休みだー!!」と喜ぶ、今日が祝日じゃないなら「今日は休みじゃない……」と落ち込むプログラムを書いてみます。
先ほどのコードをそのまま持ってきて、if文で条件分岐するだけの簡単なプログラムです。
import datetime
import jpholiday
#今日が祝日かどうか判定する
holiday = jpholiday.is_holiday(datetime.date.today())
if holiday == True:
print("今日は休みだー!!")
else:
print("今日は休みじゃない……")
if holiday == False:
print("今日は休みじゃない……")
にすることで、祝日でない日の処理を決めることもできます。
まとめ
個人的な考えですが、「jpholiday」は今日が祝日かどうかで処理を分岐させたいときに使えるモジュールだと思います。
使用するモジュールがdatetimeとjpholidayのみで、コードも数行で完結するので、非常に取り扱いが簡単です。一度触ってみてはいかがでしょうか。