我试图在用户的本地时区中获取适当的时间范围以在数据库中查询(日期时间存储在UTC中)。这是我发现的一些奇怪行为,我不知道该如何解决:
import pytz
from datetime import datetime,timedelta
local_tz = pytz.timezone("America/New_York")
utc = pytz.timezone("UTC")
start = local_tz.localize(datetime(2019,11,3)) # 2019-11-03 00:00:00-04:00
end = start + timedelta(days=1) # 2019-11-04 00:00:00-04:00
start_utc = utc.normalize(start) # 2019-11-03 04:00:00+00:00
end_utc = utc.normalize(end) # 2019-11-04 04:00:00+00:00
utc.normalize(local_tz.localize(datetime(2019,4))) # 2019-11-04 05:00:00+00:00
当标准化end
变量(通过向timedelta
添加start
对象构成的变量)时,夏令时更改丢失了。为什么会发生这种情况?