在我的代码中,我要求用户提供格式的日期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))
Run Code Online (Sandbox Code Playgroud)
这将返回错误
TypeError:描述符'date'需要'datetime.datetime'对象但收到'int'
如果我删除int()然后我最终得到相同的错误只是它说它收到了'str'
我究竟做错了什么?
pla*_*aes 48
看来你已经导入了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))
Run Code Online (Sandbox Code Playgroud)
..或这个:
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))
Run Code Online (Sandbox Code Playgroud)
Bol*_*wyn 34
你这样导入吗?
from datetime import datetime
Run Code Online (Sandbox Code Playgroud)
然后你必须改变它看起来像这样:
import datetime
Run Code Online (Sandbox Code Playgroud)
说明:在第一种情况下,您正在有效地调用模块中datetime.datetime.date()对象的方法.在后一种情况下,您使用构造函数创建一个新对象.datetimedatetimedate()datetime.date()
或者,您可以将导入更改为:
from datetime import datetime, date
Run Code Online (Sandbox Code Playgroud)
然后使用date(y,m,d)(不带datetime.前缀)构造.
Tim*_*son 12
如果你已经拥有
from datetime import datetime
Run Code Online (Sandbox Code Playgroud)
然后你可以像这样构造:
christmas = datetime(2013,12,25)
Run Code Online (Sandbox Code Playgroud)
如果我这样做,我可以重现错误
from datetime import *
Run Code Online (Sandbox Code Playgroud)
当我这样做时它会消失
import datetime
Run Code Online (Sandbox Code Playgroud)
所以检查你的进口.
我怀疑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))
Run Code Online (Sandbox Code Playgroud)
因此,您调用的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'
Run Code Online (Sandbox Code Playgroud)
您可以同时使用datetime和datetime.datetime。像这样编写导入:
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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
55400 次 |
| 最近记录: |