类型对象“datetime.datetime”没有属性“datetime”

问题描述 投票:0回答:15

我收到以下错误:

类型对象“datetime.datetime”没有属性“datetime”

在下一行:

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

有人知道错误原因吗?

我用

from datetime import datetime
导入了日期时间,如果有帮助的话

谢谢

python datetime namespaces
15个回答
349
投票

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


174
投票

对于Python 3.3

from datetime import datetime, timedelta
futuredate = datetime.now() + timedelta(days=10)

28
投票

您确实应该将模块导入到它自己的alias中。

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

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

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

24
投票

你应该使用

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

或者改变

from datetime import datetime

import datetime

8
投票

如果您使用过:

from datetime import datetime

然后只需将代码编写为:

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

但是如果你使用过:

import datetime

那么只有你可以写:

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

5
投票

我遇到了同样的错误,也许您已经仅使用

import datetime
导入了模块,因此将
from datetime import datetime
更改为仅
import datetime
。我改回来后它对我有用。


3
投票
import time
import datetime
from datetime import date,timedelta

您必须从

datetime
导入
datetime


2
投票

我发现这要容易得多

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

2
投票

避免写

from datetime import datetime
datetime.datetime.function()

解决方案1

import datetime
datetime.datetime.function()

解决方案2

from datetime import datetime
datetime.function()

1
投票

您只需运行以下命令即可。

导入日期时间

datetime.fromtimestamp(details.start_date).strftime("%Y-%m-%d %H:%M:%S")


0
投票
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)

0
投票

删除一个日期时间:

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

你会得到这个:

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

您已经导入了第一个:

from datetime import datetime

所以它是多余的。


0
投票

我试过了:

import datetime 
from datetime import timedelta

而且有点效果


0
投票

您应该使用 dt.datetime 而不是 datetime.datetime。 它的效果非常好,如示例所示: 将日期时间导入为 dt 从日期时间导入日期时间,timedelta

string_date1="2023-11-22" date1=dt.datetime.strptime(string_date1, "%Y-%m-%d").date() 打印(日期1) string_add_days =“14” 添加的天数 = dt.timedelta(天数 = int(string_added_days)) 打印(添加天数) date_in_future=日期1+添加的天数 打印(未来日期)


-4
投票

问题在于您正在使用标签

from datetime

我有同样的问题,你需要像这样使用它

import datetime
© www.soinside.com 2019 - 2024. All rights reserved.