将日期转换为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))
任何帮助表示赞赏!
答案 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。