Python: Python: 日付の加算・減算(n日後・n日前)

Pythonで日付の加算・減算を行って、 n日後・n日前の日付を取得したい場合は、datetimeモジュールの timedeltaを使います。 英単語の「delta」には「差、差分」といった意味があります。

例えば翌日の日付であればtimedalta()の引数に「day=1」を指定し、 前日の日付であれば「day=-1」を指定します。 その値を基準となる日付に加算して「基準日 + datetime.timedelta(days=1)」 と記述すると基準日の翌日の日付が取得できます。

timedeltaのサンプルコード

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

import datetime

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

# 翌日
t1 = t + datetime.timedelta(days=1)
print(t1)  # 2021-09-02

# 前日
t2 = t + datetime.timedelta(days=-1)
print(t2)  # 2021-08-31

# 31日後
t3 = t + datetime.timedelta(days=31)
print(t3)  # 2021-10-02

# 31日前
t4 = t + datetime.timedelta(days=-31)
print(t4)  # 2021-08-01

指定日からのn日後、n日前を取得する

先程は当日日付を基準日としましたが、 年月日を自分で指定する場合は次のようにdatetime.date()の引数に年、月、日を指定します。

import datetime

# 基準日
t = datetime.date(2022, 8, 1)
print(t)  # 2022-07-01

# 翌日
t1 = t + datetime.timedelta(days=1)
print(t1) # 2022-07-02

# 前日
t2 = t + datetime.timedelta(days=-1)
print(t2) # 2022-06-30

datetime.timedelta()の引数

datetime.timedelta()で指定できる引数は日付だけでなく、 時間や分なども指定できます。引数の一覧は下表の通りです。

引数内容
days
weeks
hours時間
minutes
seconds
millisecondsミリ秒
microsecondsマイクロ秒

なお、datetime.timedelta()では「1か月後・1か月前」 といった指定はできません。 その場合は「dateutil.relativedelta()」を指定します。

参考記事:来月・先月(nカ月後・nカ月前)の日付

Python