0

我正在努力解决 Python 中看似常见的时区问题,但无法解决它或找到我在 SO 上遇到的确切问题,所以我提出以下问题。

我有一个没有设置时区的时间元组。我也有一个时区。我的电脑在不同的时区。考虑到夏令时,如何将时间转换为当地时间?

>>> type(dt.value)
<type 'datetime.datetime'>
>>> print dt.timetuple()
time.struct_time(tm_year=2012, tm_mon=6, tm_mday=28, ..., tm_isdst=-1)
>>> print somezone.zone
America/New_York

如果我将区域信息添加到dt如下所示,则 DST 处理不正确......tm_isdst始终显示为零,无论月份是否处于 DST 中。

dt.value = dt.value.replace(tzinfo=somezone)
>>> print dt.timetuple()
time.struct_time(tm_year=2012, tm_mon=6, tm_mday=28, ..., tm_isdst=0)
4

1 回答 1

1

使用pytz图书馆。它会让你轻松做到这一点。

from pytz import timezone
zone_tz = timezone(zone)
zone_aware_dt = zone_tz.localize(dt)
local_tz = timezone("America/Los_Angeles")
local_dt = local_tz.normalize(zone_aware_dt)
于 2012-09-30T06:12:45.153 回答