Skip to content

Instantly share code, notes, and snippets.

@bycoffe
Created August 20, 2010 15:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bycoffe/540507 to your computer and use it in GitHub Desktop.
Save bycoffe/540507 to your computer and use it in GitHub Desktop.
def datechunk(start, end, days):
"""
Create a generator of (start_date, end_date) tuples
where the difference between start_date and end_date
is the number of days given.
>>> list(datechunk(datetime.date(2010, 01, 01), datetime.date(2010, 08, 20), 30))
[(datetime.date(2010, 1, 1), datetime.date(2010, 1, 31)),
(datetime.date(2010, 2, 1), datetime.date(2010, 3, 3)),
(datetime.date(2010, 3, 4), datetime.date(2010, 4, 3)),
(datetime.date(2010, 4, 4), datetime.date(2010, 5, 4)),
(datetime.date(2010, 5, 5), datetime.date(2010, 6, 4)),
(datetime.date(2010, 6, 5), datetime.date(2010, 7, 5)),
(datetime.date(2010, 7, 6), datetime.date(2010, 8, 5)),
(datetime.date(2010, 8, 6), datetime.date(2010, 8, 20))]
"""
import datetime
curr = start
while True:
if curr+datetime.timedelta(days) > end:
yield (curr, end)
break
yield (curr, curr+datetime.timedelta(days))
curr = curr + datetime.timedelta(days+1)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment