How to get all the dates between two dates?

Question:

from datetime import timedelta, date

def daterange(date1, date2):
   for n in range(int ((date2 - date1).days)+1):
      yield date1 + timedelta(n)

start_dt = date(2015, 12, 20)
end_dt = datetime.now()
for dt in daterange(start_dt, end_dt):
   print(dt.strftime("%Y%m%d"))

I want to print all the dates between start_dt and current date.

Here’s the error:- unsupported operand type(s) for -: 'datetime.datetime' and 'datetime.date'

Asked By: Zjeref

||

Answers:

import datetime

def daterange(date1, date2):
    date1 = datetime.datetime.strptime(date1, '%Y-%m-%d')
    date2 = datetime.datetime.strptime(date2, '%Y-%m-%d')
    return [date1 + datetime.timedelta(days=x) for x in range((date2-date1).days + 1)]

date_list = daterange('2018-01-01', '2019-01-02')

for i in date_list:
    print(i.strftime('%Y-%m-%d'))

Hopefully, this is what you are looking for.

Answered By: Flow

An alternative solution to your problem is using pandas

import pandas as pd
pd.date_range(start=start_date,end=end_date)
Answered By: Akash garg
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.