Python:来自pytz本地化时间戳的UTC时间戳

时间:2017-01-30 05:53:02

标签: python pytz

我正在尝试使用pytz将时间戳字符串转换为来自unix纪元的等效秒数。我对以下代码的输出感到困惑。

import datetime
import pytz

exif = '2008:05:03 16:23:16'
dtexif = datetime.datetime.strptime(exif, '%Y:%m:%d %H:%M:%S')
print dtexif

zrh = pytz.timezone('Europe/Zurich')
tztime = zrh.localize(dtexif)
print tztime

tzfloat = float(tztime.astimezone(pytz.utc).strftime('%s'))
utctime = pytz.utc.localize(datetime.datetime.fromtimestamp(tzfloat))
print utctime

print 'seconds since epoch: %.1f' % tzfloat

使用pytz-2016.10,它会打印:

2008-05-03 16:23:16
2008-05-03 16:23:16+02:00
2008-05-03 15:23:16+00:00
seconds since epoch: 1209849796.0

我希望第二行是:

2008-05-03 14:23:16+00:00

我对最后一行感到困惑,根据http://www.unixtimestamp.com/代表2008-05-03T21:23:16+00:00

我哪里错了?

1 个答案:

答案 0 :(得分:2)

看起来我没有进行足够的搜索,这是在这里解决的:python - datetime with timezone to epoch

计算tzfloat的行应为:

tzfloat = (tztime - datetime.datetime(1970, 1, 1, tzinfo=pytz.utc)).total_seconds()

我错误地认为时间戳已经相对于纪元。