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

时间:2011-12-17 05:04:29

标签: python unix datetime time timestamp

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

3 个答案:

答案 0 :(得分:14)

另一种方式是:

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

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

答案 1 :(得分:12)

import time

import datetime

dtime = datetime.datetime.now()

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

答案 2 :(得分:6)

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

time.mktime(datetime_object.timetuple())

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

  

在我的程序中,用户输入datetime,选择时区。 ...我创建了一个时区列表(使用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)。