如何修复没有属性timedelta的'datetime.datetime'的问题?

时间:2012-08-16 08:49:27

标签: python datetime

我将如何解决Python上的这个问题。这是我的代码:

    import time
    import datetime
    from time import mktime
    from datetime import datetime

    date = '20120814174530'
    date_to_strp = time.strptime(date, '%Y%m%d%H%M%S') #convert the value of date into strptime
    date_final = datetime.fromtimestamp(mktime(date_to_strp))
    #convert date_to_strp so so i can use it to subtract a value from a timedelta later

    date_substracted = date_final - datetime.timedelta(hours = 36)

这有一个错误:

  

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

即使我import datetime,我认为它已被from datetime import datetime覆盖,但当我更改mport datetimefrom datetime import datetime的位置时,错误为:

  

'module'对象没有'fromtimestamp'属性

我可以使用此代码修复此错误:

    import time
    from time import mktime
    from datetime import datetime

    date = '20120814174530'
    date_to_strp = time.strptime(date, '%Y%m%d%H%M%S')
    date_final = datetime.fromtimestamp(mktime(date_to_strp))

    import datetime

    date_substracted = date_final - datetime.timedelta(hours = 36)

现在,使用此代码它运行正常,但我想要的是所有导入部分将作为一个良好的做法在顶部,任何建议如何我这样做没有任何错误与这种情况或任何建议我将如何以其他方式编码。

3 个答案:

答案 0 :(得分:23)

使用datetime.datetime.fromtimestamp或将导入更改为from datetime import datetime as dt并使用dt.fromtimestamp

答案 1 :(得分:7)

请勿使用直接导入,例如:

import decimal
import datetime

这会导致:

datetime.datetime.today()
decimal.Decimal()

考虑一下:

from datetime import datetime
from decimal import Decimal
print datetime.now()
print Decimal("1")

答案 2 :(得分:5)

我想你应该像这样单独导入timedelta。

from datetime import datetime as dt, timedelta

然后你可以打电话

dt.fromtimestamp(mktime(date_to_strp))

timedelta(hours = 36)