我刚刚遇到这个问题,在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
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()
构造函数。
@Spectric 和@Joundill,感谢您提供了一个令人惊叹的解决方案。我在尝试寻找比较时间戳熊猫索引的解决方案时偶然发现了这个解决方案。我用的是Mac M1 Pro,所以就在这里回答一下。对我来说,只有以下有效。
import datetime
ts1 = datetime.date(2021, 3, 2)
ts2 = datetime.date(2021,3,2)
# delta
ts1 - ts2 #op =0