Melhor maneira de encontrar os meses entre duas datas
Eu tenho a necessidade de ser capaz de encontrar com precisão os meses entre duas datas em python. Eu tenho uma solução que funciona, mas não é muito boa (como em elegante) ou rápida.
dateRange = [datetime.strptime(dateRanges[0], "%Y-%m-%d"), datetime.strptime(dateRanges[1], "%Y-%m-%d")]
months = []
tmpTime = dateRange[0]
oneWeek = timedelta(weeks=1)
tmpTime = tmpTime.replace(day=1)
dateRange[0] = tmpTime
dateRange[1] = dateRange[1].replace(day=1)
lastMonth = tmpTime.month
months.append(tmpTime)
while tmpTime < dateRange[1]:
if lastMonth != 12:
while tmpTime.month <= lastMonth:
tmpTime += oneWeek
tmpTime = tmpTime.replace(day=1)
months.append(tmpTime)
lastMonth = tmpTime.month
else:
while tmpTime.month >= lastMonth:
tmpTime += oneWeek
tmpTime = tmpTime.replace(day=1)
months.append(tmpTime)
lastMonth = tmpTime.month
Então, só para explicar, o que estou fazendo aqui é pegar as duas datas e convertê-las do formato iso em objetos de data e hora python. Depois, passo adicionando uma semana ao objeto de data e hora de início e verifico se o valor numérico do mês é maior (a menos que o mês seja dezembro, ele verifica se a data é menor). Se o valor for maior, anexo-o à lista. de meses e continue circulando até chegar à minha data de término.
Funciona perfeitamente, simplesmente não parece ser uma boa maneira de fazê-lo ...