Reputation: 68466
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
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
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