Pythonで日付の差分を計算し、スタート日から現在まで一日ずつ足していく。「datetime」「timedelta」を使う方法
日付の計算は「datetime」「timedelta」を使う
pythonでの日付の取得には「datetime」関数を使います。
現在時刻の取得
import datetime #今日の日付 nowDate = datetime.date.today() print(nowDate) #2019-05-13
ある特定の日付を設定する
import datetime #特定の日付 startDate = datetime.date(2019, 4, 1) print(startDate ) #2019-04-1
特定日から現在日までの差分を計算するサンプルコード
import datetime from datetime import timedelta #今日 startDate = datetime.date(2019, 4, 1) #スタート日を設定 startDate = datetime.date(2019, 4, 1) #差分を計算 period=nowDate-startDate print(period) #42 days, 0:00:00
特定日から現在日までの差分を一日ずつカウントしていくサンプルコード
import datetime from datetime import timedelta #今日 nowDate = datetime.date.today() print(nowDate) #日を設定 startDate = datetime.date(2019, 4, 1) print(startDate) #差分を計算 period=nowDate-startDate print(period) #差分を整数型に変換 period=int(period.days) #差分を使って、スタートの日から現在まで一日ずつ足していく for d in range(period): day=startDate+datetime.timedelta(days=d) print(day)
出力例
2019-05-13 2019-04-01 42 days, 0:00:00 2019-04-01 2019-04-02 2019-04-03 2019-04-04 2019-04-05 2019-04-06 2019-04-07 2019-04-08 2019-04-09 2019-04-10 2019-04-11 2019-04-12 2019-04-13 2019-04-14 2019-04-15 2019-04-16 2019-04-17 2019-04-18 2019-04-19 2019-04-20 2019-04-21 2019-04-22 2019-04-23 2019-04-24 2019-04-25 2019-04-26 2019-04-27 2019-04-28 2019-04-29 2019-04-30 2019-05-01 2019-05-02 2019-05-03 2019-05-04 2019-05-05 2019-05-06 2019-05-07 2019-05-08 2019-05-09 2019-05-10 2019-05-11 2019-05-12
月の計算を行う
「日」を必要がない場合は場合は「dateutil.relativedelta」を使うことで月単位の計算が出来ます。
月を足し引きする
import datetime from dateutil.relativedelta import relativedelta # 今月 nowDate = datetime.date.today() print(nowDate) # 先月 previous_months=nowDate+relativedelta(months=-1) print(previous_months) # 翌月 next_months=nowDate+relativedelta(months=1) print(next_months) # 2019-05-13 # 2019-04-13 # 2019-06-13
特定の月から今月までをカウントする
import datetime from dateutil.relativedelta import relativedelta #今日の日付を取得 nowDate = datetime.date.today() #開始日を設定 startDate = datetime.date(2018, 4, 1) #計算用の変数 m=startDate for i in range(1000): if m<nowDate: print(m) m=m+relativedelta(months=1) else: pass
2018-04-01 2018-05-01 2018-06-01 2018-07-01 2018-08-01 2018-09-01 2018-10-01 2018-11-01 2018-12-01 2019-01-01 2019-02-01 2019-03-01 2019-04-01 2019-05-01
あるいは
import datetime from dateutil.relativedelta import relativedelta #今日の日付を取得 nowDate = datetime.date.today() #開始日を設定 startDate = datetime.date(2018, 4, 1) #計算用の変数 m=startDate for i in range(1000): if m<nowDate: print(m.strftime("20%y%m")) m=m+relativedelta(months=1) else: pass
201804 201805 201806 201807 201808 201809 201810 201811 201812 201901 201902 201903 201904 201905