26

我将如何在 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”

即使 I import datetime,我认为它已被 覆盖from datetime import datetime,但是当我更改 and 的位置时import 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)

现在,有了这段代码,它可以正常运行,但我想要的是所有导入部分都将作为一个好的做法放在顶部,任何关于我将如何做到这一点的建议,而不会出现任何错误,或者关于我将如何做的任何建议以其他方式对其进行编码。

4

3 回答 3

38

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

于 2012-08-16T08:54:40.010 回答
9

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

from datetime import datetime as dt, timedelta

然后你可以打电话

dt.fromtimestamp(mktime(date_to_strp))

timedelta(hours = 36)
于 2015-08-07T23:12:09.000 回答
8

不要使用直接导入,例如:

import decimal
import datetime

会导致:

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

考虑一下:

from datetime import datetime
from decimal import Decimal
print datetime.now()
print Decimal("1")
于 2012-09-17T19:12:07.683 回答