2

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

因为我需要将一个事件对象(数据库中的行/条目)复制到另一个中。它创建另一个具有相同细节的对象。

此事件对象涉及时区和夏令时。

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


在平常的日子里

活动对象1日期:2014年11月10日上午10点36分

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

这个OK..!


但在 DST 日子里,我不希望这 1 小时的变化。

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

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


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

4

1 回答 1

0

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

于 2014-11-10T14:29:31.300 回答