Homunculus Reticulli
Homunculus Reticulli

Reputation: 68466

TypeError: unsupported type for timedelta days component: datetime.datetime

I am trying to perform some date arithmetic in a function.

from datetime import datetime, timedelta

def foo(date1, summing_period):
    current_period_start_date = date1 - timedelta(days=summing_period)
    # Line above causes the error:
    # TypeError: unsupported type for timedelta days component: datetime.datetime

First arg is a datetime obj and 2nd arg is an integer

What is causing this error, and how do I fix it?

Upvotes: 15

Views: 86079

Answers (2)

snabo
snabo

Reputation: 11

If you want use arg on function, try something like this:

from datetime import timedelta, datetime

def fromdate(howManyDaysYouWantToBack):
    searchingDate  = datetime.today() - timedelta(days=howManyDaysYouWantToBack)
    timestampSearchingDate = (int(searchingDate.timestamp()))
    return timestampSearchingDate

Argument, on this case is days=float, you need to get this value from some place on your code, for example:

howManyDaysYouWantToBack = float(input("How many days you want to back? "))

You can use "float" or "int", on both cases this function will be works.

Upvotes: 1

eumiro
eumiro

Reputation: 212995

summing_period should be an integer (representing the number of days), not a datetime object.

>>> timedelta(days=datetime.now())
TypeError: unsupported type for timedelta days component: datetime.datetime

>>> timedelta(days=5)
datetime.timedelta(5)

Upvotes: 20

Related Questions