Pythonで日付データを扱う処理を書くことになりました。 「Google Apps Script」や「JavaScript」なら、Day.jsライブラリが便利です。 じゃあ、Pythonなら? 便利 ... 続きを見る
標準ライブラリ「datetime」で日付の足し算、引き算ができるけれど、最長で週単位でした。
datetimeについてはこちら:Pythonで日付を扱うには?
じゃあ、月単位や年単位で計算したいときはどうしたらよいのか?
その方法をまとめました。
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の詳細はこちら
まとめ
日付を年単位、月単位で計算したいときは、外部ライブラリ「dateutil」を使うと便利です。
個人的には、翌月曜日の日付が簡単に取得できるのに驚きました。