Python django应用程序中的DST时区问题

Python django应用程序中的DST时区问题,python,django,dst,django-timezone,Python,Django,Dst,Django Timezone,我正在django制作一个事件应用程序 在这种情况下,我需要将一个事件对象(DB中的行/条目)复制到另一个事件对象中。它创建另一个具有相同细节的对象 此事件对象涉及时区和日光节约 我在DST期间面临问题。我在复制对象期间应用了5天的时间增量 平日 事件对象1 日期:2014年11月10日上午10:36 事件对象2(1的副本) 日期:2014年11月15日上午10:36 这没关系 但在DST的日子里,我不想要这1小时的改变 事件对象1 日期:2015年10月30日上午10:36 事件对象2(1

我正在django制作一个事件应用程序

在这种情况下,我需要将一个事件对象(DB中的行/条目)复制到另一个事件对象中。它创建另一个具有相同细节的对象

此事件对象涉及时区和日光节约

我在DST期间面临问题。我在复制对象期间应用了5天的时间增量


平日

事件对象1 日期:2014年11月10日上午10:36

事件对象2(1的副本) 日期:2014年11月15日上午10:36

这没关系


但在DST的日子里,我不想要这1小时的改变

事件对象1 日期:2015年10月30日上午10:36

事件对象2(1的副本) 日期:2015年11月4日上午9:36



在DST变化期间,对象2中的1小时自动减少(10月30日属于DST,11月4日不属于DST)。但我想要同样的时间。如何解决这个问题?

时间增量代数通过增加/减少时间而不是日期来工作,这就是为什么在通过DST更改时可以减少一小时

我认为最简单的解决方案是使用局部时间执行代数,而不是规范化。这样你就“做错了”,但你会得到你想要的

例如:

timestamp_1 = event.timestamp   # we assume this datetime comes in UTC
madrid = pytz.timezone('Europe/Madrid')
madrid.localize(timestamp_1)
timestamp_2 = timestamp_1 + datetime.timedelta(days=5)
new_event = Event(timestamp=timestamp_2)