こんにちは。
時刻に対する floor 関数を作ってみました(dt_floor()
)。計算単位として、下記例では 1 時間を整数で除算した値の 15 分を使っています。
interval = 900 # in seconds
dt = datetime.datetime.strptime("2020-01-01 00:05:05+09:00", '%Y-%m-%d %H:%M:%S%z')
print(dt_floor(dt, interval)) # => "2020-01-01 00:00:00+09:00"
import datetime
MINUTE = 60 # in seconds
HOUR = 3600 # in seconds
ndiv = 4 # in [1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30, 60]
interval = HOUR//ndiv # in seconds
def dt_floor(dt, interval):
interval_m = interval//MINUTE # in minutes
minute_floor = (dt.minute//interval_m)*interval_m
return dt.replace(minute=minute_floor, second=0)