2

我想以这种方式将带有US/EasternBudapest/Europe区的日期时间转换为时区:

import pytz
from datetime import datetime

ET = pytz.timezone('US/Eastern')
CET = pytz.timezone('Europe/Budapest')

time = datetime(2013, 04, 18, 0, 0, tzinfo=ET)
newTime = time.astimezone(CET)

这导致 newTime being: datetime.datetime(2013, 4, 18, 7, 0, tzinfo=<DstTzInfo 'Europe/Budapest' CEST+2:00:00 DST>),但它应该2013,04,18,6,0根据time.istimeanddate.com转换器。我做错了什么?

4

2 回答 2

5

这是因为夏令时问题。传递到的时间datetimeET,不是EDT,因此是结果。

看一下pytz文档,首选方法是使用localize方法,而不是通过tzinfo. 如果您修改代码以使用以下行,您将获得预期的结果:

time = ET.localize(datetime(2013, 04, 18, 0, 0))
于 2013-04-19T23:36:19.943 回答
0

US/Eastern是别名。也许 pytz 将其视为固定为 EST 而不是 EDT?我不知道。但是试试看America/New_York是否更好。

于 2013-04-19T23:31:29.277 回答