Wrong timezone? 30min instead 1hr
本问题已经有最佳答案,请猛点这里访问。
有了这个,我现在挣扎了几个小时。 代码比我在这里提供的示例大得多,但它分解为:
我有一个天真的日期时间对象,我想将其转换为UTC时间,但这不会按预期工作。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | import datetime import pytz # Following is a naive datetime object, but we know the user meant # timezone Europe/Zurich zurich = datetime.datetime(2016, 1, 8, 7, 10) # datetime.datetime(2016, 1, 8, 7, 10) # So I'm now converting it to a datetime object which is aware of the # timezone zurich = zurich.replace(tzinfo=pytz.timezone('Europe/Zurich')) # datetime.datetime(2016, 1, 8, 7, 10, tzinfo=<DstTzInfo 'Europe/Zurich' BMT+0:30:00 STD>) # Let's convert to UTC zurich = zurich.astimezone(pytz.utc) # datetime.datetime(2016, 1, 8, 6, 40, tzinfo=<UTC>) |
与UTC时间相比,苏黎世的偏移量为+01:00(夏令时)或+02:00(夏令时)。 为什么Python认为它是+00:30 ?!
任何帮助都非常感谢(我已经开始拔头发了)。
我在类似的问题上找到了这个答案,如果我用另一种方式重写你的代码,它似乎可以满足你的要求
1 2 3 4 5 | import datetime import pytz zurich = pytz.timezone('Europe/Zurich').localize(datetime.datetime(2016,1,8,7,10), is_dst=None) zurich = zurich.astimezone(pytz.utc) # datetime.datetime(2016, 1, 8, 6, 10, tzinfo=<UTC>) |