我很难理解为什么我得到了我得到的结果。
我想尝试一下:
选择两个时区,一个使用DST,另一个不使用。例如:罗马尼亚(dst)和委内瑞拉(没有dst)。
对于具有dst的时区,请创建两个日期时间。一个在dst的间隔,一个不是。罗马尼亚DST区间(4-10 / 4月至10月)。例如:
from datetime import datetime
from pytz import timezone
tz1 = timezone('Europe/Bucharest')
tz2 = timezone('America/Caracas')
date1 = datetime(2016, 5, 5, 5, 0, 0, tzinfo=tz1) # its in the dst interval (5 o'clock, summer - dst)
date1 = datetime(2016, 12, 5, 5, 0, 0, tzinfo=tz1) # isn't in the dst interval (5 o'clock, winter - no dst)
x = date1.astimezone(tz2)
y = date2.astimezone(tz2)
x
和y
不应该有不同的时间吗?因为date1在DST间隔中,所以当日期时间不在DST间隔时,5点应该表示与date2中的5点不同的小时。
然而,当转换为无DST时区时,x
和y
都有相同的小时。
感谢您提供的任何解释。
答案 0 :(得分:4)
您无法使用datetime
构造函数来使用pytz
时区,您必须使用localize
:
date1 = tz1.localize(datetime(2016, 5, 5, 5, 0, 0))
date2 = tz1.localize(datetime(2016, 12, 5, 5, 0, 0))
不幸的是,对于许多时区,使用标准日期时间构造函数的'tzinfo参数''与pytz不起作用。