Python报错 | TypeError: descriptor 'date' requires a 'datetime.datetime' object but received a 'int'

发布时间 2023-07-03 09:28:57作者: 张Zong在修行

报错信息

使用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.datedatetime对象的方法,并且不知道如何处理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