Generate date string range in python

Post date: Jan 6, 2016 6:49:09 AM

Use the package datetime.

  • use datetime.datetime.strptime(date_string, date_string_format) to create datetime object
  • use dt.strftime(format) to format the datetime output
  • use datetime.timedelta() for arithmetic of datetime. More detail here.

Here is the function I use to create list of date range.

def generate_date_range(start_date, end_date, increment=1, format="%Y-%m-%d", verbose=False):

'''

Generate list of dates ranging from start_date to end_date inclusively.

:param start_date: The starting date, inclusive

:param end_date: The end date, inclusive

:return: a list of date of format 'YYYY-MM-DD'

'''

import datetime

date_list = []

dt = datetime.datetime.strptime(start_date, format)

end_date = datetime.datetime.strptime(end_date, format)

while dt <= end_date:

if verbose:

print str(dt.strftime(format))

date_list.append(str(dt.strftime(format)))

dt = dt + datetime.timedelta(days=increment)

return date_list

For example,

In [11]: generate_date_range('2015-12-30', '2016-01-03')

Out[11]: ['2015-12-30', '2015-12-31', '2016-01-01', '2016-01-02', '2016-01-03']

This post can be useful.