I am accessing some data through an API where I need to provide the date range for my request, ex. start=\'20100101\', end=\'20150415\'. I thought I would speed this up by
I've created a function, which includes the end date in date split.
from dateutil import rrule
from dateutil.relativedelta import relativedelta
from dateutil.rrule import DAILY
def date_split(start_date, end_date, freq=DAILY, interval=1):
"""
:param start_date:
:param end_date:
:param freq: refer rrule arguments can be SECONDLY, MINUTELY, HOURLY, DAILY, WEEKLY etc
:param interval: The interval between each freq iteration.
:return: iterator object
"""
# remove microsecond from date object as minimum allowed frequency is in seconds.
start_date = start_date.replace(microsecond=0)
end_date = end_date.replace(microsecond=0)
assert end_date > start_date, "end_date should be greated than start date."
date_intervals = rrule.rrule(freq, interval=interval, dtstart=start_date, until=end_date)
for date in date_intervals:
yield date
if date != end_date:
yield end_date