Вот относительно эффективный способ Pure Python ™.Пропускаются високосные дни просто по , а не , включая их в таблицу _DAYS_IN_MONTH
(поэтому ничего особенного не делается в зависимости от того, является ли текущий год, который обрабатывается, високосным).
Я не знаю точно, почему вы [думаете], что вам это нужно, но, возможно, было бы лучше сделать это с помощью функции генератора , которая избавила бы от необходимости хранить так много datatime
объектов впамять в то же время.
from datetime import datetime
_DAYS_IN_MONTH = [31,28,31,30,31,30,31,31,30,31,30,31] # Ignores leap days.
start_year, end_year = 2007, 2016
dates = []
for year in range(start_year, end_year):
for month in range(1, 13):
for day in range(1, _DAYS_IN_MONTH[month-1]+1):
for hour in range(0, 24):
for minute in range(0, 60):
dates.append(datetime(year, month, day, hour, minute))
print('len(dates): {:,d}'.format(len(dates))) # -> len(dates): 4,730,400