在我的代码中,我要求用户提供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))
这会返回错误
TypeError:描述符'date'需要'datetime.datetime'对象但收到'int'
如果我删除了int()
,那么我最后会遇到同样的错误,只是说它收到了'str'
我做错了什么?
答案 0 :(得分:44)
您似乎已导入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))
答案 1 :(得分:29)
你这样导入吗?
from datetime import datetime
然后你必须改变它看起来像这样:
import datetime
说明:在第一种情况下,您实际上正在调用datetime.datetime.date()
,即模块datetime
中对象datetime
上的方法。在后一种情况下,您使用构造函数date()
创建一个新的datetime.date()
对象。
或者,您可以将导入更改为:
from datetime import datetime, date
然后使用date(y,m,d)
构建(不带datetime.
前缀)。
答案 2 :(得分:11)
如果你已经
from datetime import datetime
然后你可以像这样构建:
christmas = datetime(2013,12,25)
答案 3 :(得分:5)
如果我这样做,我可以重现错误
from datetime import *
当我这样做时它会消失
import datetime
请检查您的导入。
答案 4 :(得分:4)
You can use both datetime and datetime.datetime. Write the imports like this:
from datetime import datetime
import datetime as dt
time_1 = datetime.strptime('17:00:00', '%H:%M:%S')
time_1 = dt.time(time_1.hour, time_1.minute, time_1.second)
答案 5 :(得分:2)
我怀疑datetime
引用了对象而不是模块。你可能确实有以下代码(可能更复杂):
from 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))
因此,您正在调用date
类的datetime
方法,而不是调用date
模块的datetime
函数。
您可以打印datetime
对象以查看是否确实如此:
>>> import datetime
>>> print datetime
<module 'datetime' (built-in)>
>>> print datetime.date(1, 1, 1)
0001-01-01
>>> datetime = datetime.datetime
>>> print datetime
<type 'datetime.datetime'>
>>> print datetime.date(1, 1, 1)
Traceback (most recent call last):
File "<pyshell#12>", line 1, in <module>
print datetime.date(1, 1, 1)
TypeError: descriptor 'date' requires a 'datetime.datetime' object but received a 'int'
答案 6 :(得分:0)
错误提示您的导入看起来不错。相反,在使用日期时间进行操作时,请确保首先将值转换为日期时间格式。
使用 pandas.to_datetime 进行相同操作,然后再对同一操作执行任何操作。
答案 7 :(得分:0)
TypeError: 描述符 'date' 需要一个 'datetime.datetime' 对象,但收到了一个 'int'
这是因为您使用了年、月、日等变量。
使用这样的东西:
year1, month1, day1 = [int(d) for d in startDate.split('-')]
print(date(year1, month1, day1))
它会起作用。