Return 下一个间隔的开始和结束取决于当前时间

Return start and end of next interval depending on current time

我正在寻找一种方法来获取特定时间间隔的开始和结束日期时间,该时间间隔在相同长度的持续时间间隔之后。间隔始终从一小时的第一分钟和第二秒开始,并且 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 的函数时,函数应该 return 下一个间隔:

{ "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 分钟该怎么办)和格式我会留给你,但希望这能帮助你开始。