-3

I am using this code to find months between two dates:

from dateutil.rrule import rrule, MONTHLY
from datetime import datetime
start_date = datetime(2017, 4, 30)
end_date = datetime(2017, 5, 6)
months = [dt.strftime("%m")
          for dt in rrule(MONTHLY, dtstart=start_date,
                          until=end_date)]
In [14]: months
Out[14]: ['04']

I was expecting ['04', '05']

For example if i change dates

from dateutil.rrule import rrule, MONTHLY
from datetime import datetime
start_date = datetime(2017, 4, 30)
end_date = datetime(2017, 5, 30)
months = [dt.strftime("%m")
          for dt in rrule(MONTHLY, dtstart=start_date,
                          until=end_date)]

In [42]: months
Out[42]: ['04', '05']
Náthali
  • 937
  • 2
  • 10
  • 22

1 Answers1

4

Try This:

from datetime import datetime
from dateutil.relativedelta import relativedelta
from dateutil.rrule import rrule, MONTHLY


start_date = datetime(2017,4,30)
end_date = datetime(2017,5,6)

oneMonth = relativedelta(months=1)

months = [dt.strftime("%m")
          for dt in rrule(MONTHLY, dtstart=start_date,
                          until=end_date+oneMonth)]

print months

Output:

['04', '05']
Vikram Singh Chandel
  • 1,290
  • 2
  • 17
  • 36