2011-12-17 172 views
22

請幫助我將日期時間對象(例如:2011-12-17 11:31:00-05:00)(包括時區)更改爲Unix時間戳(如Python中的函數time.time())。在Python中將日期時間更改爲Unix時間戳

+0

可能http://stackoverflow.com/questions/2775864/python-datetime-to-unix-timestamp – 2011-12-18 04:08:32

+0

相關的副本// stackoverflow.com/a/8778548/4279) – jfs 2013-05-26 01:40:24

回答

6

不完整的答案(不處理時區),但希望有用:

time.mktime(datetime_object.timetuple()) 

**編輯基於以下注釋**

在我的程序中,用戶輸入的日期時間,選擇時區。 ...我創建了一個時區列表(使用pytz.all_timezones)並允許用戶從該列表中選擇一個時區。

Pytz模塊提供必要的轉換。例如。如果dt是你datetime對象,用戶選擇「美國/東方」

import pytz, calendar 
tz = pytz.timezone('US/Eastern') 
utc_dt = tz.localize(dt, is_dst=True).astimezone(pytz.utc) 
print calendar.timegm(utc_dt.timetuple()) 

的說法is_dst=True是在夏令結束了1小時的間隔期間來解析不明確的時間(見這裏http://pytz.sourceforge.net/#problems-with-localtime)。

+0

我真的需要處理時區。 – 2011-12-17 05:15:19

+0

輸入日期時間對象是否包含正確的tzinfo?或者,如果不是,你怎麼知道你感興趣的時區? – 2011-12-17 05:40:19

14

另一種方法是:

import calendar 
from datetime import datetime 
d = datetime.utcnow() 
timestamp=calendar.timegm(d.utctimetuple()) 

時間戳是Unix時間戳示出相同的日期與日期時間對象d。 [在Python轉換datetime.date到UTC時間戳](HTTP:

12
import time 

import datetime 

dtime = datetime.datetime.now() 

ans_time = time.mktime(dtime.timetuple()) 
相關問題