使用Python将模糊时间转换为正确的本地时间

时间:2012-09-30 06:10:24

标签: python datetime dst

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

我有一个没有设置时区的timetuple。我也有时区。而且我的电脑处于不同的时区。如何将时间转换为考虑夏令时的当地时间?

>>> 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始终显示为零,无论该月份是否在夏令时。

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)

1 个答案:

答案 0 :(得分: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)