重复“事件”(日历)

6
我正在开发一个应用程序,允许人们为在线电台安排“节目”。我希望用户能够设置重复事件,例如:
- “Manic Monday” 节目 - 每周一 9-11 点播出 - “Mid Month Madness” 节目 - 每月第二个星期四播出 - “本月新歌” 节目 - 每月1日播出
在基于MVC/MTV结构的模型中,你认为最好的建模方式是什么?
注意:我实际上是在Django中编写代码。但我更关心它的理论,而不是具体的实现细节。
3个回答

9
啊,重复事件——我的噩梦之一,和时区一样。日历编程很难。
你可能想按RFC2445建模。然而,那可能会给你带来比你实际需要的更多的灵活性和复杂性。
考虑以下几点:
- 你是否需要比某个特定日期更细致的时间粒度?如果需要根据时间重复,就会变得更加棘手。 - 考虑一些日期边界情况,例如“每月30日”,以及这对闰年意味着什么。 - 考虑一些时间边界情况,例如“每天早上1:30”——有时1:30会发生两次,有时可能根本没有,这取决于夏令时。 - 你需要与其他时区的人分享日程吗?这会让问题变得更加棘手。 - 你需要表示事件发生的次数,还是最后一个事件发生的日期?(基本上是“计数”或“直到”。)你可能不需要任何一个,或者你可能需要其中一个或两个。

我知道这只是一些需要思考的事情列表,而不是一个明确的答案,但我认为在尝试解决问题之前定义问题的参数是非常重要的。


一些很好的评论... 即使不是最终答案。 - Mez

1

0

我的想法是在保存原始事件时生成重复事件,使用新模型。这意味着我不必每次加载日历时都进行随机处理(并且意味着我也可以取消一系列中的一个“展示”),但也意味着我必须将其限制在某个时间范围内,以便如果有人比如说一年后查看日历,他们就不会看到这些重复的展示。但在某个时候,它们必须(潜在地)重新生成。


1
通常情况下,您可以使用“异常”事件来取消/更改重复事件中的一个事件。 - Jon Skeet
嗯... 没想过那个! - Mez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接