なろう分析記録

『小説家になろう』をふくめ『ネット小説投稿サイト』を分析する。コード置き場,主にPython,javascript,たまに創作。

Pythonで日付の差分を計算し、スタート日から現在まで一日ずつ足していく。「datetime」「timedelta」を使う方法

日付の計算は「datetime」「timedelta」を使う

f:id:karupoimou:20190513051853p:plain:w400
pythonで日付をカウントするサンプルコードの例
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