Python报错 | TypeError: descriptor 'date' requires a 'datetime.datetime' object but received a 'int'
报错信息
使用python创建一个datetime.data类的时候,报如下错误:
TypeError: descriptor 'date' requires a 'datetime.datetime' object but received a 'int'
错误原因
报错翻译过来是:
提示" TypeError:描述符'date'需要一个'datetime.datetime'对象,但收到了一个'int'
您可能导入了:
from datetime import datetime
也就是说,名称datetime
将引用表示日期和时间的类datetime
(从datetime
模块导入,该模块令人讨厌的是,具有相同的名称)。
然后,date
是一种检索datetime
对象的日期部分的方法:
In [4]: my_date = datetime(2015,5,7,20,02,00)
In [5]: my_date.date()
In [6]: datetime.date(2015, 5, 7)
因此,如果使用一个或多个整数参数进行调用,则会报错:
In [7]: datetime.date(999)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-5-55d65eb13663> in <module>()
----> 1 datetime.date(999)
TypeError: descriptor 'date' requires a 'datetime.datetime' object but received a 'int'
在这种情况下,datetime.date
是datetime
对象的方法,并且不知道如何处理999
。以下是等效的:
In [8]: datetime.date(my_date)
Out[8]: datetime.date(2015, 5, 7)
In [9]: my_date.date()
Out[9]: datetime.date(2015, 5, 7)
如果导入datetime
模块,则可以执行所需操作,因为date
也是该模块中的类的名称(用于表示没有小时,分钟等的日期):
In [1]: import datetime
In [2]: datetime.date(2015, 5, 7) # OK, returns a date object
解决方案
1、使用
from datetime import date
2、使用
import datetime