Skip to content

Instantly share code, notes, and snippets.

@ivanjr0
Created September 10, 2012 19:54
Show Gist options
  • Save ivanjr0/3693417 to your computer and use it in GitHub Desktop.
Save ivanjr0/3693417 to your computer and use it in GitHub Desktop.
import datetime
def step_by_month(date):
if date.month == 12:
return datetime.date(date.year + 1, 1, 1)
return datetime.date(date.year, date.month + 1, 1)
def date_range(start, stop, step):
swp, current = None, start
while current < stop:
swp, current = current, step(current)
yield swp
def main():
today = datetime.date.today()
start = datetime.date(2009, 12, 1)
stop = today - datetime.timedelta(days=today.day)
period = list(date_range(start, stop, step_by_month))
print period
if __name__ == '__main__':
main()
[datetime.date(2009, 12, 1), datetime.date(2010, 1, 1), datetime.date(2010, 2, 1), datetime.date(2010, 3, 1), datetime.date(2010, 4, 1), datetime.date(2010, 5, 1), datetime.date(2010, 6, 1), datetime.date(2010, 7, 1), datetime.date(2010, 8, 1), datetime.date(2010, 9, 1), datetime.date(2010, 10, 1), datetime.date(2010, 11, 1), datetime.date(2010, 12, 1), datetime.date(2011, 1, 1), datetime.date(2011, 2, 1), datetime.date(2011, 3, 1), datetime.date(2011, 4, 1), datetime.date(2011, 5, 1), datetime.date(2011, 6, 1), datetime.date(2011, 7, 1), datetime.date(2011, 8, 1), datetime.date(2011, 9, 1), datetime.date(2011, 10, 1), datetime.date(2011, 11, 1), datetime.date(2011, 12, 1), datetime.date(2012, 1, 1), datetime.date(2012, 2, 1), datetime.date(2012, 3, 1), datetime.date(2012, 4, 1), datetime.date(2012, 5, 1), datetime.date(2012, 6, 1), datetime.date(2012, 7, 1), datetime.date(2012, 8, 1)]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment