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

obu*_*tsu 15 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)
Run Code Online (Sandbox Code Playgroud)

这有一个错误:

类型对象'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)
Run Code Online (Sandbox Code Playgroud)

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

eca*_*mur 25

使用datetime.datetime.fromtimestamp或更改导入from datetime import datetime as dt和使用dt.fromtimestamp.

  • @obutsu:如果这个答案帮助你解决了这个问题,你应该把它标记为已接受的答案,而不仅仅是感谢. (4认同)

yet*_*yet 7

不要使用直接导入,如:

import decimal
import datetime
Run Code Online (Sandbox Code Playgroud)

它会导致:

datetime.datetime.today()
decimal.Decimal()
Run Code Online (Sandbox Code Playgroud)

考虑一下:

from datetime import datetime
from decimal import Decimal
print datetime.now()
print Decimal("1")
Run Code Online (Sandbox Code Playgroud)


小智 5

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

from datetime import datetime as dt, timedelta
Run Code Online (Sandbox Code Playgroud)

然后你可以打电话

dt.fromtimestamp(mktime(date_to_strp))
Run Code Online (Sandbox Code Playgroud)

timedelta(hours = 36)
Run Code Online (Sandbox Code Playgroud)