错误的时区? 30分钟而不是1小时

时间:2016-01-08 18:01:04

标签: python datetime pytz

有了这个我现在挣扎了几个小时。代码比我在这里提供的示例大得多,但它分解为:

我有一个天真的日期时间对象,我想将其转换为UTC时间,但这不会按预期工作。

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 个答案:

答案 0 :(得分:1)

我在类似问题上找到this回答,如果我以其他方式重写您的代码,它似乎可以解决您的请求

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>)