Search code examples
pythondatedatetimenonetypetimedelta

datetime.datetime + timedelta(days=5) is returning None


startdate = dt.strptime('13/12/2020', '%d/%m/%Y')
enddate = dt.strptime('4/12/2020', '%d/%m/%Y')
interval = 5
print('startdate', startdate)
print('enddate', enddate)

loop_startdate = startdate
loop_endate = None

for _ in range((diff//interval) + 1):
    print(_, loop_startdate)
    loop_enddate = loop_startdate + timedelta(days=interval)
    print('loop_enddate', loop_endate)
    if loop_enddate > enddate:
        loop_enddate = enddate
    loop_startdate = loop_endate

startdate and enddate are datetime.datetime instances. I have printed out 'startdate' and enddate and the results are given below.

startdate 2020-12-04 00:00:00
enddate 2020-12-13 00:00:00
0 2020-12-04 00:00:00
loop_enddate None
1 None
Traceback (most recent call last):

  File "pythonfilepathhere", line 81, in <module>
    loop_enddate = loop_startdate + timedelta(days=interval)

TypeError: unsupported operand type(s) for +: 'NoneType' and 'datetime.timedelta'

I have double checked to make sure that startdate and endate are in datetime.datetime type. I actucally need it as date and not as datetime though. I tried using loop_startdate.date() + timedelta() also, but it is also returning None.

I don't understand why datetime.datetime + timedelta() is returning None. My Python version is 3.6.5


Solution

  • Seems like a small typo.

    Change print('loop_enddate', loop_endate) to print('loop_enddate', loop_enddate).

    Also, change loop_startdate = loop_endate to loop_startdate = loop_enddate.