类型对象“datetime.datetime”没有属性“datetime”
Posted
技术标签:
【中文标题】类型对象“datetime.datetime”没有属性“datetime”【英文标题】:type object 'datetime.datetime' has no attribute 'datetime' 【发布时间】:2012-10-06 01:30:58 【问题描述】:我收到以下错误:
类型对象'datetime.datetime'没有属性'datetime'
在下面一行:
date = datetime.datetime(int(year), int(month), 1)
有人知道错误的原因吗?
如果有帮助,我会使用 from datetime import datetime
导入日期时间
谢谢
【问题讨论】:
【参考方案1】:Datetime 是一个允许处理日期、时间和日期时间(所有这些都是数据类型)的模块。这意味着datetime
既是***模块,也是该模块中的一个类型。这令人困惑。
您的错误可能是基于模块的混乱命名,以及您或您正在使用的模块已经导入。
>>> import datetime
>>> datetime
<module 'datetime' from '/usr/lib/python2.6/lib-dynload/datetime.so'>
>>> datetime.datetime(2001,5,1)
datetime.datetime(2001, 5, 1, 0, 0)
但是,如果你导入 datetime.datetime:
>>> from datetime import datetime
>>> datetime
<type 'datetime.datetime'>
>>> datetime.datetime(2001,5,1) # You shouldn't expect this to work
# as you imported the type, not the module
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: type object 'datetime.datetime' has no attribute 'datetime'
>>> datetime(2001,5,1)
datetime.datetime(2001, 5, 1, 0, 0)
我怀疑您或您正在使用的模块之一已像这样导入:
from datetime import datetime
.
【讨论】:
@Jean 这是 datetime 用它的类名之一而不是 python 的类名来隐藏它自己的模块名的错误。【参考方案2】:你应该使用
date = datetime(int(year), int(month), 1)
或者改变
from datetime import datetime
到
import datetime
【讨论】:
【参考方案3】:对于 python 3.3
from datetime import datetime, timedelta
futuredate = datetime.now() + timedelta(days=10)
【讨论】:
+1。我认为这应该是正确的答案,因为据我所知,import datetime
总是会导致问题,所以我赞成使用 from datetime import datetime
的解决方案
这是最好的答案。其他答案令人困惑。这应该是公认的答案。
我个人很喜欢这个,因为它在使用 from X import Y 方法时显示了 timedelta 的正确用法。【参考方案4】:
如果您使用过:
from datetime import datetime
然后简单的把代码写成:
date = datetime(int(year), int(month), 1)
但是如果你用过:
import datetime
那么只有你可以写:
date = datetime.datetime(int(2005), int(5), 1)
【讨论】:
【参考方案5】:您应该真正将模块导入到它自己的别名中。
import datetime as dt
my_datetime = dt.datetime(year, month, day)
与其他解决方案相比,上述方案具有以下优势:
调用变量my_datetime
而不是date
可以减少混淆,因为日期时间模块中已经存在date
(datetime.date
)。
模块和类(都称为datetime
)不会相互影响。
【讨论】:
【参考方案6】:我发现这要容易得多
from dateutil import relativedelta
relativedelta.relativedelta(end_time,start_time).seconds
【讨论】:
【参考方案7】:from datetime import datetime
import time
from calendar import timegm
d = datetime.utcnow()
d = d.strftime("%Y-%m-%dT%H:%M:%S.%fZ")
utc_time = time.strptime(d,"%Y-%m-%dT%H:%M:%S.%fZ")
epoch_time = timegm(utc_time)
【讨论】:
尽量避免只使用代码的答案。你可以edit你的帖子添加一些解释和链接来支持你的代码。【参考方案8】:我遇到了同样的错误,也许您已经只使用import datetime
导入了模块,所以将from datetime import datetime
更改为仅import datetime
。我改回来后它对我有用。
【讨论】:
form
是错字吗?好像应该是from
。【参考方案9】:
import time
import datetime
from datetime import date,timedelta
您必须从datetime
导入datetime
。
【讨论】:
以上是关于类型对象“datetime.datetime”没有属性“datetime”的主要内容,如果未能解决你的问题,请参考以下文章
#yyds干货盘点# Python3 解决 Json 无法解析 datetime 格式数据
为啥 object dtype 数组包含 datetime.datetime 对象而不是 numpy.datetime64 对象?
TypeError:“datetime.datetime”对象的描述符“date”不适用于“datetime.date”对象