dateutil.rrule
, вероятно, будет самым простым долгосрочным способом сделать это, хотя API немного сложен:
rrule(dtstart=datetime.now() - timedelta(hours=1), until=datetime.now(), freq=MINUTELY, interval=5)
В качестве альтернативы, вы можете довольно легко сделать это вручную, просто начните иостановить datetime и увеличивать начало на соответствующую временную дельту, пока она не превысит конечную границу.Если вам нужно определенное количество фрагментов, а не конкретная длина фрагмента, вычислите разницу между началом и концом и разделите на свое число.
occurrences = []
end = datetime.now()
st = datetime.now() - timedelta(hours=1)
while st < end:
occurrences.append(st)
st += timedelta(minutes=5)
оба будут медленнее, чем работают непосредственно с метками времени.