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

问题描述 投票:0回答:2

我刚刚遇到这个问题,在Google首页找不到合理的答案。它类似于 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 datetime
datetime.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
python python-3.x datetime
2个回答
87
投票

解决方案:

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

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

为什么?

问题是

datetime.datetime.date()
datetime.datetime
 对象
上的方法
。我们将
datetime
模块与
datetime.datetime
类混淆了。

我们真正寻找的是

datetime.date()
构造函数


0
投票

@Spectric 和@Joundill,感谢您提供了一个令人惊叹的解决方案。我在尝试寻找比较时间戳熊猫索引的解决方案时偶然发现了这个解决方案。我用的是Mac M1 Pro,所以就在这里回答一下。对我来说,只有以下有效。

import datetime
ts1 = datetime.date(2021, 3, 2)
ts2 = datetime.date(2021,3,2)

# delta
ts1 - ts2 #op =0
© www.soinside.com 2019 - 2024. All rights reserved.