将特定时区中的datetime对象转换为该时区中的纪元秒

时间:2012-12-11 23:09:51

标签: python datetime timezone-offset timestamp-with-timezone

例如:

>>> print dt
2012-12-04 19:00:00-05:00

如您所见,我有这个日期时间对象 如何在GMT -5中将此日期时间对象转换为纪元秒。

我该怎么做?

1 个答案:

答案 0 :(得分:6)

您的日期时间不是天真的日期时间,它知道它所在的时区(您的打印状态为-5)。因此,您只需将其设置为utc,然后再将其转换为纪元

>>> import time, pytz
>>> utc = pytz.timezone('UTC')
>>> utc_dt = utc.normalize(dt.astimezone(utc))
>>> time.mktime(utc_dt.timetuple())
1355270789.0 # This is just to show the format it outputs

如果dt对象是一个天真的日期时间对象,您需要使用时区来遵守夏令时,同时在GMT 0之间找到正确的小时数。例如,罗马尼亚在冬天,它有+ 2和夏天+3。

对于你的-5例子,纽约将会这样做:

>>> import time,pytz
>>> timezone = pytz.timezone('America/New_York')
>>> local_dt = timezone.localize(dt)

现在你有一个非天真的日期时间,你可以像我第一次解释的那样得到纪元时间。 玩得开心