title: Best way to find the months between two dates
body: <p>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. </p>
  
  <pre><code>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 &lt; dateRange[1]:
      if lastMonth != 12:
          while tmpTime.month &lt;= lastMonth:
              tmpTime += oneWeek
          tmpTime = tmpTime.replace(day=1)
          months.append(tmpTime)
          lastMonth = tmpTime.month
  
      else:
          while tmpTime.month &gt;= lastMonth:
              tmpTime += oneWeek
          tmpTime = tmpTime.replace(day=1)
          months.append(tmpTime)
          lastMonth = tmpTime.month
  </code></pre>
  
  <p>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.</p>
  
  <p>It works perfectly it just doesn't seem like a good way of doing it...</p>