Попробуйте :
# import modules
from datetime import datetime, timedelta
# Create starting and end datetime object from string
start = datetime.strptime("07:00:00", "%H:%M:%S")
end = datetime.strptime("17:00:00", "%H:%M:%S")
# min_gap
min_gap = 5
# compute datetime interval
arr = [(start + timedelta(hours=min_gap*i/60)).strftime("%H:%M:%S")
for i in range(int((end-start).total_seconds() / 60.0 / min_gap))]
print(arr)
# ['07:00:00', '07:05:00', '07:10:00', '07:15:00', '07:20:00', '07:25:00', '07:30:00', ..., '16:55:00']
Пояснения :
- Сначала необходимо преобразовать
string
дату в объект даты и времени , strptime делает это! - Затем мы найдем количество минут между начальной датой и конечной датой-временем. Это обсуждение решило это! Мы можем сделать это следующим образом:
(end-start).total_seconds() / 60.0
Однако в нашем случае мы хотим повторять только каждые n
минуты. Итак, в нашем loop
нам нужно разделить его на n
.
Кроме того, поскольку мы будем повторять это количество минут, нам нужно преобразовать в int
для for
l oop. В результате:
int((end-start).total_seconds() / 60.0 / min_gap)
Затем на каждом элементе нашего l oop мы добавим количество минут к начальной дате и времени. Функция tiemdelta была разработана для. В качестве параметра мы указываем количество часов, которое мы хотим добавить: min_gap*i/60
.
Наконец, мы конвертируем этот объект datetime
обратно в строковый объект, используя strftime .