将日期转换为unix时间戳时添加了一个小时

时间:2014-12-09 00:31:23

标签: python datetime unix-timestamp

将日期转换为unix时间戳并格式化时,正在添加一小时。我做错了什么?

>>> import dateutil.parser
>>> import datetime

>>> date_str = "2014-12-09T19:00:00+1100"
>>> date = dateutil.parser.parse(date_str)
>>> unix = int(date.strftime('%s'))

>>> date_str
'2014-12-09T19:00:00+1100'

>>> date
2014-12-09 19:00:00+11:00

>>> print(unix)
1418115600

>>> datetime.datetime.fromtimestamp( unix).strftime('%Y-%m-%d %H:%M:%S')
2014-12-09 20:00:00

小时从19:00更改为20:00。我怀疑这与时区有关。但我不知道到底出了什么问题。

我使用Epoch calculator来验证unix时间戳。似乎在将日期变量转换为unix时间戳的过程中添加了一小时。 (date = dateutil.parser.parse(date_str))

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:1)

您可以通过执行以下操作从datetime对象获取Unix时间戳:

import pytz

timestamp = int((datetime_obj - datetime.datetime(1970, 1, 1, tzinfo=pytz.utc)).total_seconds())

这需要pytz库。我们正在使用total_seconds(),因此这个解决方案是Python 2.7 +。

在您的情况下,它为您提供与原始日期时间匹配的时间戳1418112000。