类型对象'datetime.datetime'没有属性'datetime'

时间:2012-10-16 01:39:33

标签: python django

我正在关注django教程,我收到了以下错误:

  

类型对象'datetime.datetime'没有属性'datetime'

在以下行中:

date = datetime.datetime(int(year), int(month), 1)

有人知道错误的原因吗?

如果有帮助,我用from datetime import datetime导入了datetime

由于

8 个答案:

答案 0 :(得分:165)

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

答案 1 :(得分:9)

你应该使用

date = datetime(int(year), int(month), 1)

或更改

from datetime import datetime

import datetime

答案 2 :(得分:6)

您确实应该将模块导入其自己的别名

import datetime as dt
my_datetime = dt.datetime(year, month, day)

以上优点与其他解决方案相比具有以下优势:

  • 调用变量my_datetime而不是date可以减少混淆,因为日期时间模块(date)中已经有datetime.date
  • 模块和类(均称为datetime)不会相互遮挡。

答案 3 :(得分:1)

我遇到了同样的错误,也许您已经仅通过使用import datetime导入了模块,所以将form datetime import datetime更改为仅import datetime。我改回来后对我有用。

答案 4 :(得分:0)

如果您使用过:

from datetime import datetime

然后简单地将代码写为:

date = datetime(int(year), int(month), 1)

但如果您使用过:

import datetime

然后只有你可以写:

date = datetime.datetime(int(2005), int(5), 1)

答案 5 :(得分:0)

我发现这更容易

from dateutil import relativedelta
relativedelta.relativedelta(end_time,start_time).seconds

答案 6 :(得分:0)

import time
import datetime
from datetime import date,timedelta

您必须从 datetime 导入 datetime

答案 7 :(得分:-2)

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)