2012-07-24 138 views
3

我想在函数中执行一些日期算术。TypeError:不支持的类型为timedelta天组件:datetime.datetime

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 

第一个参数是一个日期OBJ和2 arg是一个整数

是什么原因造成这个错误,以及如何解决它?

+0

显然你的第二个参数是* not *一个整数。 – 2012-07-24 11:07:50

回答

4

summing_period应该是一个整数(表示天数),而不是一个datetime对象。

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

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

嗯,只是检查 - 的确,第二个参数是一个日期时间,不是我所假设的。我将不得不进一步检查调用堆栈以确定被调用者使用错误的参数调用func。 – 2012-07-24 11:10:22