###月末の日付を取得する方法をメモしておきます。
###①dateutilライブラリを使用する
標準ライブラリのtimedeltaでは、日付に加算・減算はできますが、月の加算はできません。
そのため外部ライブラリのdateutilを使用します。
外部ライブラリなので、まずはインストールします。
$ pip install python-dateutil
今月の末日を取得する処理を例に解説をします。
import datetime
from dateutil.relativedelta import relativedelta
today = datetime.date.today() # 2021-12-15
last_day_current_month = today + relativedelta(months=1, day=1) - relativedelta(days=1)
print(current_month_lastdate)
# 2021-12-31
1つ目の足し算で来月の1日となります。
2つ目の引き算で1日引き算をしているので今月の末日となります。
dateutil/relativedelta
###②calendarライブラリを使う
こちらは標準ライブラリですので、インストールは必要ありません。
import calendar
print(calendar.monthrange(2021, 12))
# (2, 31) <- (1日の曜日, 指定月の日数)
戻り値を見てみると
2番目の値が指定月の日数、すなわち月末日を表します。
ちなみに1番目の値は、1日の曜日を表します。
月曜日から日曜日までを0から6で表しますので、2は火曜日ということになります。
Python/Calendar
###まとめ
月末日付のdate型もしくはdatetime型を取得する場合は①dateutilライブラリを使用して
指定月の翌月の1日から1日引き算することで、指定月の末日が取得できます。
月末が何日までなのかを取得する場合は②を使うと簡単に月末日を取得できます。