类型错误:“datetime.datetime”对象的描述符“date”不适用于“int”对象

时间:2021-03-02 00:11:10

标签: python python-3.x datetime

我刚遇到这个问题,在 Google 的首页上找不到合理的答案。它类似于 this question asked in 2011,但对于较新版本的 Python,会导致不同的错误消息。

是什么导致了这些 TypeError

整数

import datetime
my_date = datetime.datetime.date(2021, 3, 2) 

导致错误:

TypeError: descriptor 'date' for 'datetime.datetime' objects doesn't apply to a 'int' object

字符串

同样,用字符串替换整数也会产生同样的错误:

import datetime
my_date = datetime.datetime.date("2021", "3", "2") 

给出:

TypeError: descriptor 'date' for 'datetime.datetime' objects doesn't apply to a 'str' object

列表

并且使用列表会产生相同的错误:

import datetime
my_date = datetime.datetime.date([2021, 3, 2]) 

结果:

TypeError: descriptor 'date' for 'datetime.datetime' objects doesn't apply to a 'list' object

同样,使用 from datetime import datetimedatetime.date 将分别导致以下错误消息:

TypeError: descriptor 'date' for 'datetime' objects doesn't apply to a 'int' object
TypeError: descriptor 'date' for 'datetime' objects doesn't apply to a 'str' object
TypeError: descriptor 'date' for 'datetime' objects doesn't apply to a 'list' object

1 个答案:

答案 0 :(得分:4)

解决方案:

import datetime
my_date = datetime.date(2021, 3, 2)

from datetime import date
my_date = date(2021, 3, 2)

为什么?

问题是 datetime.datetime.date() is a method 上的 datetime.datetime object。我们混淆了 datetime 模块和 datetime.datetime 类。

我们真正需要的是 datetime.date() constructor