Skip to content

Instantly share code, notes, and snippets.

@joeshaw
Last active August 29, 2015 14:14
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 joeshaw/3e4172b5adc034a9771b to your computer and use it in GitHub Desktop.
Save joeshaw/3e4172b5adc034a9771b to your computer and use it in GitHub Desktop.
import datetime
def _parse_date(d):
if isinstance(d, datetime.date):
return d
elif isinstance(d, datetime.datetime):
return d.date()
else:
return datetime.datetime.strptime(d, '%Y-%m-%d').date()
def day_generator(start_date=None, end_date=None, skip=1):
if start_date is None:
d = datetime.date.today()
else:
d = _parse_date(start_date)
if end_date is not None:
end_date = _parse_date(end_date)
def _in_range(d):
if end_date is None:
return True
if skip > 0 and d > end_date:
return False
if skip < 0 and d < end_date:
return False
return True
while _in_range(d):
yield d
d += datetime.timedelta(days=skip)
def main():
for day in day_generator('2014-03-01', '2014-03-10'):
print day
print
for day in day_generator('2014-11-16', '2014-10-31', -4):
print day
if __name__ == "__main__":
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment