[Python] Best way to find the months between two dates

Discussão em 'Python' iniciado por Stack, Julho 16, 2025.

  1. Stack

    Stack Membro Participativo

    I have the need to be able to accurately find the months between two dates in python. I have a solution that works but its not very good (as in elegant) or fast.

    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


    So just to explain, what I'm doing here is taking the two dates and converting them from iso format into python datetime objects. Then I loop through adding a week to the start datetime object and check if the numerical value of the month is greater (unless the month is December then it checks if the date is less), If the value is greater I append it to the list of months and keep looping through until I get to my end date.

    It works perfectly it just doesn't seem like a good way of doing it...

    Continue reading...

Compartilhe esta Página