在Python中将datetime更改为Unix时间戳

Change datetime to Unix time stamp in Python

请帮我将datetime对象(例如:2011-12-17 11:31:00-05:00)(包括时区)更改为Unix时间戳(如Python中的函数time.time())。


另一种方式是:

1
2
3
4
import calendar
from datetime import datetime
d = datetime.utcnow()
timestamp=calendar.timegm(d.utctimetuple())

时间戳是unix时间戳,它显示与datetime对象d相同的日期。


1
2
3
4
5
6
7
import time

import datetime

dtime = datetime.datetime.now()

ans_time = time.mktime(dtime.timetuple())


不完整的答案(不涉及时区),但希望有用:

1
time.mktime(datetime_object.timetuple())

**根据以下评论编辑**

In my program, user enter datetime, select timezone. ... I created a timezone list (use pytz.all_timezones) and allow user to chose one timezone from that list.

Pytz模块提供必要的转换。 例如。 如果dt是您的datetime对象,并且用户选择了"US / Eastern"

1
2
3
4
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)。