2011-12-13 97 views

回答

8

使用timetupleutctimetuple方法獲取時間數組和使用它轉換成時間戳time.mktime

>>> import datetime 
>>> dt = datetime.datetime(2011, 12, 13, 10, 23) 
>>> import time 
>>> time.mktime(dt.timetuple()) 
1323793380.0 

有一個很好的錯誤相關http://bugs.python.org/issue2736,這是有趣的閱讀和任何人試圖轉換爲時間戳應閱讀此。根據該線程正確的方法是

timestamp = (dt - datetime(1970, 1, 1))/timedelta(seconds=1) 
+0

'mktime()'只在'dt'是當地時間時才起作用。 「正確的方式」只適用於'dt'是一個天真的日期時間對象,它表示UTC的時間(如果'dt'是本地時間,則是錯誤的)。請參閱[在Python中將datetime.date轉換爲UTC時間戳](http://stackoverflow.com/a/8778548/4279)。 – jfs

2

您可以使用datetime.datetime(1970, 1, 1)作爲參考,從datetime.timedelta對象獲得秒的總金額如下:

from datetime import datetime 

delta = your_date - datetime(1970, 1, 1) 
delta.total_seconds() 
+0

它假定'your_date'是UTC日期。 – jfs

2
import calendar 

calendar.timegm(datetime_object.utctimetuple()) 
+0

如果'datetime_object'沒有附加時區信息,'utctimetuple()'會自動失敗,除非'datetime_object'已經代表UTC時間。 – jfs

0

這些線可以返回表示紀元以來秒的浮點數。

import time 

time.time() 
+2

這不是問題。 – kay

0

爲DateTime對象(破停機時間:年/月/日/時/分/秒)轉換爲seconds since the Epoch (POSIX time)

seconds_since_epoch = datetime_object.timestamp() 

注:POSIX Epoch is "00:00:00 GMT, January 1, 1970"

如果datetime_object沒有時區信息,則.timestamp()方法使用本地時區。

datetime.timestamp() method是在Python 3.3中引入的;對於適用於較舊Python版本的代碼,請參閱Converting datetime.date to UTC timestamp in Python

相關問題