2015-02-23 183 views
1

我需要將微秒分辨率的日期時間對象轉換爲時間戳,問題是我沒有得到相同的時間戳秒的分辨率。從日期時間到時間戳python

例如,我作爲參數傳遞的時間戳是1424440192,而我得到的返回值爲1424429392.011750,爲什麼這樣呢?I只更改了datetime對象的微秒值,所以我希望只更改點後面的值。 PD:在這個例子中,我只模擬一個時間戳。

from datetime import datetime, timedelta 
def totimestamp(dt, epoch=datetime(1970,1,1)): 
    td = dt - epoch 

    return td.total_seconds() 
    #return (td.microseconds + (td.seconds + td.days * 24 * 3600) * 
    #10**6)/1e6 


timestamp_pc = 1424440192 

tm = datetime.fromtimestamp(timestamp_pc) 
new_tm = tm.replace(microsecond = 11750) 

print tm 
print new_tm 
print timestamp_pc 
print "%f " %(totimestamp(new_tm)) 
+0

如果您將'tm = datetime.fromtimestamp ...'和'new_tm = tm.replace ...'放在行之間,那麼'print totimestamp(tm)'會顯示什麼? – BorrajaX 2015-02-23 19:32:05

+0

相關:[在Python中將datetime.date轉換爲UTC時間戳](http://stackoverflow.com/q/8777753/4279) – jfs 2015-02-24 04:58:34

回答

0

fromtimestamp documentation

如果可選參數TZ是無或不指定,時間戳轉換爲平臺的本地日期和時間,返回的DateTime對象是幼稚的。

由於您的totimestamp函數不能在相反的時間域進行相同的調整,因此您的時區偏移會導致時間錯誤。

2

我明白了。 我改變 tm = datetime.fromtimestamp(timestamp_pc)tm = datetime.utcfromtimestamp(timestamp_pc)

現在時間戳是相同的。