2012-08-16 53 views
9

我將如何解決這個問題在Python上。這裏是我的代碼:如何解決沒有屬性timedelta的'datetime.datetime'問題?

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) 

這有一個錯誤:

type object 'datetime.datetime' has no attribute 'timedelta'

即使我import datetime,我認爲它是由from datetime import datetime重寫,但是當我改變了mport datetimefrom datetime import datetime位置,錯誤的是:

'module' object has no attribute 'fromtimestamp'

我可以解決這個錯誤都與此代碼:

012現在
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) 

,這段代碼是正常的,但我要的是所有的進口部分將在頂部是一個很好的做法,對任何建議我將如何做,沒有這種情況或任何錯誤關於如何以其他方式編碼的建議。

回答

16

請使用datetime.datetime.fromtimestamp或將輸入更改爲from datetime import datetime as dt並使用dt.fromtimestamp

+0

謝謝你這麼多@ecatmur,我不熟悉Python,這就是爲什麼我不知道我可以使用別名與進口部分...再次感謝你。 – obutsu 2012-08-16 09:18:22

+4

@obutsu:如果這個答案幫助你解決了這個問題,你應該將它標記爲已接受的答案,而不僅僅是感謝。 – 2012-08-22 07:57:19

5

不要使用直接進口,如:

import decimal 
import datetime 

這將導致:

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

考慮一下:

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

,我想你應該分別導入timedelta這樣。

from datetime import datetime as dt, timedelta 

然後就可以調用

dt.fromtimestamp(mktime(date_to_strp)) 

timedelta(hours = 36) 
相關問題