Создать список datеtime имея начальную дату и конечную

Нужно создать функцию на пайтоне, которая бы генерировала список с датами от определённой даты до определённой даты (можно вводить любые). При этом datetime должен быть формата '%d.%m.%Y %H:%M'. На каждую дату должно быть 48 элементов, чтобы воемя в них менялось с 00:00 до 23:30 с интервалом в 30 минут.

Например у нас есть 21.10.2012 и 23.10.2012. Значит в списке должны быть

['21.10.2012 00:00', 
'21.10.2012 00:30', 
'21.10.2012 01:00',
..., 
'23.10.2012 23:00', 
'23.10.2012 23:30']

Ответы (1 шт):

Автор решения: AivanF.

Вам нужна функция datetime_range, как и в обычном range, задаются нижняяя граница включительно, верхняя граница исключительно и шаг. Вариант реализации с использованием функции-генератора:

import datetime

def datetime_range(start, end, step):
    current = start
    while current < end:
        yield current
        current += step

Пример использования:

values = list(datetime_range(
    datetime.datetime.strptime('2020-09-20 12:00', '%Y-%m-%d %H:%M'),
    datetime.datetime.strptime('2020-09-21 14:00', '%Y-%m-%d %H:%M'),
    datetime.timedelta(hours=4))
)
print([dt.strftime('%Y-%m-%d %H:%M') for dt in values])

Вывод:

['2020-09-20 12:00', '2020-09-20 16:00', '2020-09-20 20:00', '2020-09-21 00:00', '2020-09-21 04:00', '2020-09-21 08:00', '2020-09-21 12:00']

→ Ссылка