根据当前时间返回下一个间隔的开始和结束



我正在寻找一种方法来获取特定间隔的开始和结束日期时间,该时间在相同长度的正在进行的惰性值之后。间隔总是从一小时的第一分钟和第二分钟开始,60 mod interval总是0(因此间隔总是适合60分钟的时间跨度,如1m、3m、5m、15m、30m(。

对于15分钟的间隔,可能的日期时间为:

...
interval_start="2021-04-02 09:00:00", interval_end="2021-04-02 09:14:59"
interval_start="2021-04-02 09:15:00", interval_end="2021-04-02 09:29:59"
interval_start="2021-04-02 09:30:00", interval_end="2021-04-02 09:44:59"
interval_start="2021-04-02 09:45:00", interval_end="2021-04-02 09:59:59"
interval_start="2021-04-02 10:00:00", interval_end="2021-04-02 10:14:59"
...

当我调用当前时间为2021-04-02 09:20:46的函数时,该函数应返回以下下一个间隔:

{ "interval_start": "2021-04-02 09:30:00", "interval_end"="2021-04-02 09:44:59"}
import datetime as dt
from math import ceil
def next_interval(t, interval):
start_hr = t.hour
mins_float = t.minute + t.second/60
start_min = ceil(mins_float/interval)*interval

start = t.replace(second=0, millisecond=0, microsecond=0, minute=start_min, hour=start_hr)
end = start + dt.timedelta(minutes=interval)
return {'interval_start': start, 'interval_end': end}

边缘情况(例如,如果间隔没有平均划分为60分钟,该怎么办(和格式我将留给您,但希望这能帮助您开始。

最新更新