2011-12-17 177 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()) 
相关问题