2008-10-31 53 views
40

如何將日期時間或日期對象轉換爲Python中的POSIX時間戳?有一些方法可以從時間戳創建日期時間對象,但我似乎沒有找到任何明顯的方法來完成相反的操作。將日期時間轉換爲POSIX時間

回答

48
import time, datetime 

d = datetime.datetime.now() 
print time.mktime(d.timetuple()) 
+0

謝謝。我知道它必須是非常簡單的東西,但我無法弄清楚。 – 2008-10-31 21:53:12

+0

看來,根據平臺,時間沒有mktime方法 – Tirno 2009-03-19 22:05:51

+5

注意,這給出了本地時間,而不是UTC。有關UTC,請參閱[fixermark的答案](http://stackoverflow.com/q/5872022/60075)。 – 2011-11-23 23:44:04

21

對於UTC計算,calendar.timegmtime.gmtime的倒數。

import calendar, datetime 
d = datetime.datetime.utcnow() 
print calendar.timegm(d.timetuple()) 
4

在Python中,了time.time()可以返回秒作爲包括與微秒的小數成分的浮點數。爲了將日期時間轉換回此表示形式,您必須添加微秒組件,因爲直接時間組件不包含它。

import time, datetime 

posix_now = time.time() 

d = datetime.datetime.fromtimestamp(posix_now) 
no_microseconds_time = time.mktime(d.timetuple()) 
has_microseconds_time = time.mktime(d.timetuple()) + d.microsecond * 0.000001 

print posix_now 
print no_microseconds_time 
print has_microseconds_time 
2

需要注意的是,現在的Python(3.5.2)包括這個built-in methoddatetime對象:

>>> import datetime 
>>> now = datetime.datetime.now() 
>>> now.timestamp() # Local time 
1509315202.161655 
>>> now.replace(tzinfo=datetime.timezone.utc).timestamp() # UTC 
1509329602.161655