Сгенерировать массив Datetime от начальной даты до конечной
Есть две переменные: начальная дата и конечная. Нужно написать функцию, которая будет генерировать массив объектов Datetime, в котором должны быть даты от начальной до конечной со временем увеличивающимся на минуту (то есть 1440 объектов на каждый день).
Например: начальная дата 2012.01.01, а конечная 2012.01.03. Функция должна возвращать массив содержащий [2012.01.01 00:00, 2012.01.01 00:01, 2012.01.01 00:02, 2012.01.01 00:03, ... , 2012.01.03 23:57, 2012.01.03 23:58, 2012.01.03 23:59]
Вот код, который генерирует только даты от начальной до конечной, не учитывая время.
import datetime
import time
import pandas as pd
def rangeDate(start_date, end_date):
res = pd.date_range(
min(start_date, end_date),
max(start_date, end_date)
).strftime('%Y.%m.%d %H:%M').tolist()
return res
fstart = datetime.datetime.strptime('2012.01.01 00:00', '%Y.%m.%d %H:%M')
fend = datetime.datetime.strptime('2012.03.31 23:30', '%Y.%m.%d %H:%M')
start = datetime.datetime.combine(fstart, datetime.time(0,0))
end = datetime.datetime.combine(fend, datetime.time(23, 59))
print(rangeDate(start, end))
Ответы (2 шт):
Автор решения: strawdog
→ Ссылка
import pandas as pd
df = pd.DataFrame({"time":pd.date_range(start="13.11.2020 13:55:00",
end = "13.11.2020 14:00:00",
freq="T")})
print(df)
получим:
time
0 2020-11-13 13:55:00
1 2020-11-13 13:56:00
2 2020-11-13 13:57:00
3 2020-11-13 13:58:00
4 2020-11-13 13:59:00
5 2020-11-13 14:00:00
Автор решения: Михаил Муругов
→ Ссылка
from datetime import datetime, timedelta
def date_range(start: datetime, end: datetime, step: timedelta):
while start < end:
yield start
start += step
print(*date_range(start=datetime(2012, 1, 1), end=datetime(2013, 1, 3), step=timedelta(minutes=1)), sep='\n')