我将如何解决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 datetime
和from 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)
现在,使用此代码它运行正常,但我想要的是所有导入部分将作为一个良好的做法在顶部,任何建议如何我这样做没有任何错误与这种情况或任何建议我将如何以其他方式编码。
答案 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)