Python:来自 pytz 本地化时间戳的 UTC 时间戳
Python: UTC timestamp from pytz localized timestamp
我正在尝试使用 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
我哪里错了?
看来我搜索不够努力,这里解决了这个问题:python - datetime with timezone to epoch
计算 tzfloat 的行应该是:
tzfloat = (tztime - datetime.datetime(1970, 1, 1, tzinfo=pytz.utc)).total_seconds()
我错误地认为时间戳已经与纪元相关。
我正在尝试使用 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
我哪里错了?
看来我搜索不够努力,这里解决了这个问题:python - datetime with timezone to epoch
计算 tzfloat 的行应该是:
tzfloat = (tztime - datetime.datetime(1970, 1, 1, tzinfo=pytz.utc)).total_seconds()
我错误地认为时间戳已经与纪元相关。