Django应用程序中的DST时区问题

2024-04-28 23:37:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在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月9日上午36:00


这里1小时在DST变更期间自动减少在对象2中(10月30日属于DST,11月4日不属于DST)。但我想要同样的时间。我怎么能修好这个???在


Tags: 对象django应用程序db过程时间副本事件
1条回答
网友
1楼 · 发布于 2024-04-28 23:37:18

Timedeltas代数的工作原理是加/减时间,而不是日期,这就是为什么在通过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)

http://pytz.sourceforge.net/#localized-times-and-date-arithmetic

相关问题 更多 >