Python

Pythonで1年後や1カ月後を計算するには?

Pythonで1年後や1カ月後を計算するには?
標準ライブラリ「datetime」で日付の足し算、引き算ができるけれど、最長で週単位でした。

じゃあ、月単位や年単位で計算したいときはどうしたらよいのか?
その方法をまとめました。

 

Pythonで1年後や1カ月後を計算するには?

外部ライブラリ「dateutil」を使います。
使うにはインストールが必要なので、まだしてない場合は、コマンドプロンプトで下記のコードを実行しましょう。

pip install python-dateutil

 

コードの書き方は?

dateutilの「relativedelta」をインポート、差分を作成し、それを日付に足したり、引いたりします。

import datetime
from dateutil.relativedelta import relativedelta
 
# 1カ月後
print(datetime.date.today() + relativedelta(months=1))
 
# 1年後
print(datetime.date.today() + relativedelta(years=1))

1カ月前、1年前と過去の日付を計算するなら引き算をすれば良いです。
ちなみに、「years=」などはマイナスを指定することも可能で、変数を使う場合はこちらが良いでしょう。

import datetime
from dateutil.relativedelta import relativedelta
 
a = -1
# 1カ月前
print(datetime.date.today() + relativedelta(months=a))
 
# 1年前
print(datetime.date.today() + relativedelta(years=a))

「relativedelta()」の引数は多岐に渡り、今回紹介した「years」「months」だけでなく、標準ライブラリ「datetime」でもできる「weeks」「days」なども含まれています。
なので、日付の計算は「dateutil」だけで済ませることもできますね。

 

翌週の月曜日を計算することもできる

今日の日付に「relativedelta(weekday=0)」を足すことで、翌週の月曜日の日付を取得できます。

import datetime
from dateutil.relativedelta import relativedelta
 
print(datetime.date.today() + relativedelta(weekday=0))

Google Apps Scriptではちょっとした計算が要るのに、Pythonでは考えることなく1文で済むのでありがたいですね。

 

まとめ

日付を年単位、月単位で計算したいときは、外部ライブラリ「dateutil」を使うと便利です。
個人的には、翌月曜日の日付が簡単に取得できるのに驚きました。

-Python
-, , , , , , , ,