排查“描述符'date'需要'datetime.datetime'对象但接收到了'int'”问题

75 投票
8 回答
122923 浏览
提问于 2025-04-16 15:29

在我的代码中,我让用户输入一个日期,格式是 dd/mm/yyyy

currentdate = raw_input("Please enter todays date in the format dd/mm/yyyy: ")
day,month,year = currentdate.split('/')
today = datetime.date(int(year),int(month),int(day))

这段代码返回了一个错误:

类型错误:描述符 'date' 需要一个 'datetime.datetime' 对象,但收到了一个 'int'。

如果我去掉 int(),那么我会遇到同样的错误,只不过这次它说收到了一个 'str'

我到底哪里出错了呢?

8 个回答

14

如果你已经有了

from datetime import datetime

那么你可以这样构建:

christmas = datetime(2013,12,25)
57

你是这样导入的吗?

from datetime import datetime

那么你需要把它改成这样:

import datetime

解释一下:在第一种情况下,你实际上是在调用 datetime.datetime.date(),这是在 datetime 模块里的 datetime 对象上的一个方法。而在后面的情况下,你是用构造函数 datetime.date() 创建了一个新的 date() 对象。

另外,你也可以把导入改成:

from datetime import datetime, date

然后可以用 date(y,m,d) 来构造(不需要加 datetime. 前缀)。

71

看起来你导入的是 datetime.datetime 模块,而不是 datetime。不过这样也应该能正常工作:

import datetime
currentdate = raw_input("Please enter todays date in the format dd/mm/yyyy: ")
day,month,year = currentdate.split('/')
today = datetime.date(int(year),int(month),int(day))

..或者这样:

from datetime import date
currentdate = raw_input("Please enter todays date in the format dd/mm/yyyy: ")
day,month,year = currentdate.split('/')
today = date(int(year),int(month),int(day))

撰写回答