Python: 来月・先月(nカ月後・nカ月前)の日付を取得

Pythonで来月・先月(nカ月後・nカ月前) といった日付を取得したい場合は、dateutilモジュールの relativedeltaを使用します。 英単語の「delta」には「差、差分」といった意味があります。

dateutilは外部モジュールなので、もしインストールされていない場合は インストールしてください。 (Anacondaのデフォルト環境ではインストールされています)

# pipの場合
pip install python-dateutil

# condaの場合
conda install python-dateutil

dateutil - powerful extensions to datetime — dateuti documentation

relativedeltaの使い方

例えば来月であればrelativedelta()の引数に「month=1」を指定し、 先月であれば「month=-1」を指定します。基準となる日に加算して 「基準日 + relativedelta(month=1)」と記述すると翌月の日付が取得できます。

次のサンプルコードでは、 当日の日付を基準として、 翌月・先月・13か月後・13カ月前の日付を取得・表示しています。

import datetime
from dateutil.relativedelta import relativedelta

# 当日(基準日)
t = datetime.date.today()
print(t)   # 2021-09-01

# 翌月
t1 = t + relativedelta(months=1)
print(t1)  # 2021-10-01

# 先月
t2 = t + relativedelta(months=-1)
print(t2)  # 2021-08-01

# 13カ月後
t3 = t + relativedelta(months=13)
print(t3)  # 2022-10-01

# 13か月前
t4 = t + relativedelta(months=-13)
print(t4)  # 2020-08-01

relativedeltaの引数

dateutil.relativedelta()で指定できる引数は月以外にも年、日、時間など多数あります。 引数の一覧は下表のとおりです。

引数内容
years
months
days
weeks
hours時間
minutes
seconds
microsecondsマイクロ秒
Python