0
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'

Zjeref
  • 19
  • 1
  • 5

2 Answers2

3
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.

Flow
  • 846
  • 9
  • 24
-1

An alternative solution to your problem is using pandas

import pandas as pd
pd.date_range(start=start_date,end=end_date)
Akash garg
  • 125
  • 6