5

例如:

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

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

我该怎么做呢?

4

1 回答 1

6

您的日期时间不是一个天真的日期时间,它知道它所在的时区(您的打印状态是-5)。因此,您只需在将其转换为 epoch 之前将其设置为 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 对象是一个简单的 datetime 对象,您需要使用时区来遵守夏令时,同时在 GMT 0 之间找到正确的时间。例如,罗马尼亚在冬天,它有 +2,在夏天+3。

对于您的 -5 示例,New-York 将执行以下操作:

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

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

于 2012-12-11T23:24:26.890 回答