Advertisement
Guest User

Untitled

a guest
Jul 4th, 2015
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.79 KB | None | 0 0
  1. import calendar
  2.  
  3. from dateutil.relativedelta import relativedelta
  4.  
  5.  
  6. def nth_date(month, nth):
  7. try:
  8. month = month.replace(month.year, month.month, nth)
  9. except ValueError:
  10. month = month.replace(month.year, month.month, calendar.monthrange(month.year, month.month)[1])
  11. return month
  12.  
  13.  
  14. def dates(start, end, nth):
  15. """
  16. Given a start and end date, return a list of dates at nth date each month
  17.  
  18. If nth is greater than last day of month, set to last day of month instead.
  19. """
  20. start = nth_date(start, nth)
  21. months = [start]
  22. rd = relativedelta(end, start)
  23. total_months = (12 * rd.years) + rd.months
  24. for _ in range(total_months):
  25. start += relativedelta(months=1)
  26. start = nth_date(start, nth)
  27. months.append(start)
  28. return months
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement