【发布时间】:2013-12-27 10:20:42
【问题描述】:
我有一个没有时区信息的日期列表,但是我知道时区以及它们是本地时间的事实。我想转换为标准时间以执行时区分析
在悉尼夏令时结束于夏令时凌晨 3 点,因此前 5 行应在 +11:00 DST 之前,其余的应该在 +10:00 STD 之前。我得到的结果是第一行是 +11:00 DST,其余的是 +10:00 STD。
鉴于我知道日期列表已排序,是否有内置方法来本地化日期列表。看来您应该知道 is_dst=True 或 is_dst=False 以处理重叠。
问候 戴夫
import pytz
times = [
datetime(2013,4,7,1,45,0)
,datetime(2013,4,7,2,0,0)
,datetime(2013,4,7,2,15,0)
,datetime(2013,4,7,2,30,0)
,datetime(2013,4,7,2,45,0)
,datetime(2013,4,7,2,00,0)
,datetime(2013,4,7,2,15,0)
,datetime(2013,4,7,2,30,0)
]
#
timezone = pytz.timezone('Australia/Sydney')
localized = map(timezone.localize, times)
for t,l in zip(times, localized):
print(t,l)
【问题讨论】:
-
你看过 datetime.isoformat() 吗?它可能会对你有所帮助。
-
不,我会检查的。我已经意识到我可以通过传递 is_dst=True 来实现我想要的,直到我到达凌晨 2:00 的第二个实例,所以我创建了一个解决方法,我在其中循环遍历日期。第一次遇到我设置为 is_dst=True 的日期,第二次设置为 False。