【发布时间】:2012-01-22 11:38:15
【问题描述】:
请帮我将日期时间对象(例如:2011-12-17 11:31:00-05:00)(包括时区)更改为 Unix 时间戳(如 Python 中的函数 time.time())。
【问题讨论】:
标签: python unix datetime time timestamp
请帮我将日期时间对象(例如:2011-12-17 11:31:00-05:00)(包括时区)更改为 Unix 时间戳(如 Python 中的函数 time.time())。
【问题讨论】:
标签: python unix datetime time timestamp
另一种方式是:
import calendar
from datetime import datetime
d = datetime.utcnow()
timestamp=calendar.timegm(d.utctimetuple())
Timestamp 是 unix 时间戳,它显示与 datetime 对象 d 相同的日期。
【讨论】:
(d - datetime(1970,1,1)).total_seconds()
import time
import datetime
dtime = datetime.datetime.now()
ans_time = time.mktime(dtime.timetuple())
【讨论】:
timetuple() 将 tm_isdst 设置为 -1,这迫使 mktime() 猜测,即有 50% 的可能性它会出错。使用 UTC 时间或感知日期时间对象。
不完整的答案(不涉及时区),但希望有用:
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)。
【讨论】: