小ネタです。
要するに、時刻A と 時刻B を指定したときの、各時間間隔での時刻取得したかったです。
当初はdateutilを使う方法でなく、自前で実装しようと思ったのですが、面倒なことに気づきました。なのであきらめて、dateutilを使用しています。
なんとなくgoogle Colaboratoryで計算してみました
以下は、google Colaboratoryを使ってみました。GPU使えるそうですがあまり関係なく、サンプル用に使っています。
以下がdateutilの例です。
from dateutil.parser import parse from dateutil.rrule import rrule, MONTHLY, DAILY , HOURLY months = list(rrule(MONTHLY, dtstart=parse("20200101T000000"), until=parse("20200902T000000"))) days = list(rrule(DAILY, dtstart=parse("20200101T000000"), until=parse("20200902T000000"))) hours = list(rrule(HOURLY, dtstart=parse("20200822T090000"), until=parse("20200923T090000"))) print(months[0]) print(months[1]) print(months[-2]) print(months[-1]) print(days[0]) print(days[1]) print(days[-2]) print(days[-1]) print(hours[0]) print(hours[1]) print(hours[-2]) print(hours[-1])
結果は以下の通りです。
2020-01-01 00:00:00 # 月ごと 2020-02-01 00:00:00 2020-08-01 00:00:00 2020-09-01 00:00:00 2020-01-01 00:00:00 # 日ごと 2020-01-02 00:00:00 2020-09-01 00:00:00 2020-09-02 00:00:00 2020-08-22 09:00:00 # 時間ごと 2020-08-22 10:00:00 2020-09-23 08:00:00 2020-09-23 09:00:00
月ごとの最後をあえて9/2にしてみたのですが、戻ってくるのは、9/2ではなく、
9/1が戻ってきました。まぁそういうものということで。