datetime.datetime.timedelta - 错误所有排列

时间:2017-08-24 13:21:40

标签: python python-2.7 datetime

我正在将我正在使用的Python转移到别人修改过的Python代码中。我收到错误。我知道datetime.datetime会导致问题,但我想我已经尝试了排列。在测试中,如果我在下面的行之前返回(),则没有运行时错误。我对帖子中的格式感到抱歉。我没有想好这个。

Python版本2.7.12

import os, sys, re, datetime
from datetime import datetime 

#注意:评论“从datetime import datetime”不会更改生成的错误,所以我认为有些东西是从某个地方导入的。

这些是3个版本,并在运行时生成错误消息“

dt = dt - datetime.timedelta(hours=24.5) # decrement date a day or two

给出错误“类型对象'datetime.datetime'没有属性'timedelta'”

dt = dt - datetime.datetime.timedelta(hours=24.5) # ; also error:

给出错误“类型对象'datetime.datetime'没有属性'datetime'”

dt = dt - timedelta(hours=24.5) # ; also error:

给出错误“全局名称'timedelta'未定义”

1 个答案:

答案 0 :(得分:1)

你说评论from datetime import datetime不会改变错误,但事实并非如此,这是问题的原因。

timedelta位于datetime模块中。但是,由于您已完成from datetime import datetime,因此命名空间中的名称datetime引用datetime类,而不是模块,并且不能用于直接获取句柄timedelta班。

删除此行,以便datetime引用该模块,您应该可以datetime.timedelta访问它:

>>> import datetime
>>> dt = datetime.datetime.now()
>>> dt
datetime.datetime(2017, 8, 24, 15, 10, 34, 942209)
>>> dt = dt - datetime.timedelta(hours=24.5)
>>> dt
datetime.datetime(2017, 8, 23, 14, 40, 34, 942209)

在此处试试:https://repl.it/KYDN/0

或者,您可以导入这两个类并直接引用它们:

>>> from datetime import datetime, timedelta
>>> dt = datetime.now()
>>> dt
datetime.datetime(2017, 8, 24, 15, 14, 46, 340878)
>>> dt = dt - timedelta(hours=24.5)
>>> dt
datetime.datetime(2017, 8, 23, 14, 44, 46, 340878)