2016-03-04 123 views
4

我试图创建一个整数对象datetime.date的时候,这是我的代码:类型错误创建日期对象

datetime.date(2011, 1, 1) 

它给我这个错误:

TypeError: descriptor 'date' requires a 'datetime.datetime' object but received a 'int' 
+0

提示:你是在从'datetime import datetime'或'i mport datetime'? (我猜的是前...) –

+0

'>>> import datetime >>> datetime.date(2011,1,1) datetime。日期(2011,1,1)'没问题,我不明白。如果你从'datetime import datetime'做',你实际上调用'datetime.datetime.date(2011,1,1)',这会失败。 –

+0

嗨非常感谢。问题是我从datetime导入日期时间。所以datetime.date很好,但datetime.datetime.date显然不是。 thanx再次 –

回答

4

如果你做到以下几点,它会整齐地工作:

>>> import datetime 
>>> datetime.date(2011,1,1) 
datetime.date(2011, 1, 1) 

但是,如果你这样做

从更改:

from datetime import datetime 

然后

datetime.date(2011,1,1) 

你实际上调用方法是datetime.datetime.date(2011,1,1),将失败:

>>> datetime.datetime.date(2011,1,1) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: descriptor 'date' requires a 'datetime.datetime' object but received a 'int' 
1

只要使用适当的import和你设置:

>>> from datetime import date 
>>> today = date.today() 
>>> today 
datetime.date(2016, 3, 4) 
>>> date(2016, 3, 4) 
datetime.date(2016, 3, 4) 
1

的错误可能是由于您import statement

from datetime import datetime 

要:

import datetime 
1
>>> from datetime import datetime 
>>> date = datetime(year=2011,month=1,day=1) 
>>> print date 
2011-01-01 00:00:00 
>>> 

正式文件:datetime Objects

3

答案的基础上,非常上面的慷慨捐助。

问题是,日期时间库包括一个日期时间类,这对于不熟悉的人有时令人困惑。

包裹起来,如果你这样做:

import datetime 
datetime.date(2011, 1, 1) 

>>> datetime.date(2011, 1, 1) 

由于您使用的日期类的日期时间库。

datetime.datetime.date(2011, 1, 1) 

和:但是,如果你这样做

from datetime import datetime 
datetime.date(2011, 1, 1) 

你,因为你(不经意间)使用DateTime类的日期时间库,这相当于将得到

>>>TypeError: descriptor 'date' requires a 'datetime.datetime' object but received a 'int' 

日期时间库的日期时间类没有日期方法