はじめに
コジマです。
pythonでn日後を求めるために
datetimeモジュールのtimedelta関数を使って求めることができますが、月単位の演算ができません。
from datetime import datetime, timedelta today = datetime.today() tomorrow = today + timedelta(days = 1) print("today:{}".format(today.strftime('%Y/%m/%d'))) print("tomorrow:{}".format(tomorrow.strftime('%Y/%m/%d')))
today:2020/01/07 tomorrow:2020/01/08
nヶ月後の求め方
dateutilモジュールのrelativedelta関数を使用します。
monthsのオプションを渡してあげれば良いです。
from datetime import datetime, timedelta from dateutil.relativedelta import relativedelta today = datetime.today() next_month = today + relativedelta(months = 1) print("today:{}".format(today.strftime('%Y/%m/%d'))) print("next_month:{}".format(next_month.strftime('%Y/%m/%d')))
today:2020/01/07 next_month:2020/02/07
前に戻りたいときは-演算するか、引数にマイナスの値を渡してあげれば良いです。
from datetime import datetime, timedelta from dateutil.relativedelta import relativedelta today = datetime.today() tomorrow = today + timedelta(days = 1)# 明日 yesterday = today + timedelta(days = -1) # 昨日(マイナス渡す) yesterday2 = today - timedelta(days = 1) # 昨日(引く) next_month = today + relativedelta(months = 1) # 来月 four_months_ago = today + relativedelta(months = -4) # 4ヶ月前(マイナス渡す) four_months_ago2 = today - relativedelta(months = 4) # 4ヶ月前(引く) print("today:{}".format(today.strftime('%Y/%m/%d'))) print("yesterday:{}".format(yesterday.strftime('%Y/%m/%d'))) print("yesterday2:{}".format(yesterday2.strftime('%Y/%m/%d'))) print("next_month:{}".format(next_month.strftime('%Y/%m/%d'))) print("four_months_ago:{}".format(four_months_ago.strftime('%Y/%m/%d'))) print("four_months_ago2:{}".format(four_months_ago2.strftime('%Y/%m/%d')))
today:2020/01/07 yesterday:2020/01/06 yesterday2:2020/01/06 next_month:2020/02/07 four_months_ago:2019/09/07 four_months_ago2:2019/09/07
さいごに
まとめると
- 日付の演算はdatetimeモジュールのtimedelta関数
- 月単位で変更したいときはdateutilモジュールのrelativedelta関数
- 足すだけじゃなくて引くこともできるよ
な感じですね!
この記事を面白いまたは役に立ったと思ってくれた方は是非私のTwitter(@kojimanotech)を
フォローしてくれたらうれしいです!
以上、コジマでした。