2009-07-12 79 views
6

我目前正在研究一个应用程序,允许人们为在线电台安排“节目”。重复“事件”(日历)

我想为用户设置一个重复事件的能力,例如说: -

“狂躁星期一”节目 - 每周一从9-11 “月中疯狂” - 的第二个星期四月 “这个月新音乐” - 每个月的第一场。

什么,在你看来,是模型的最佳方式(基于MVC/MTV结构)。

注意:我实际上是在Django中对此进行了编码。但是我更关心它背后的理论,而不是具体的实施细节。

回答

9

啊,重复的事件 - 我的生活中的一个咒语,以及时区。日历是

可能想在RFC2445模型。但是,这可能会给你带来更多的灵活性 - 而且比你真正想要的还要复杂。

有几件事情要考虑:

  • 你需要的任何更细的粒度超过一定时间上给出的日期?如果您还需要根据时间进行重复,则会变得更加棘手。
  • 考虑日期角落的情况,如“每月30号”以及闰年意味着什么
  • 考虑时间转折的情况,例如“每天凌晨1.30am” - 有时上午1点30分可能会发生两次,有时可能会发生由于夏令时间的原因,根本不会发生这种情况
  • 您是否需要与其他时区的人员共享时间表?这使得生活更加棘手
  • 您是否需要表示事件发生的次数或发生事件的最终日期? (“计数”或“直到”基本上)。您可能不需要,或者您可能需要一个或两个。

我意识到这是一个需要思考的问题,而不是一个明确的答案,但我认为在您尝试解决问题之前定义问题的参数非常重要。

0

我曾经想过,在保存原始事件时应该生成重复事件,并使用新模型。这意味着每次加载日历时我都没有进行随机处理(也意味着我也可以例如取消一个系列中的“显示”),但也意味着我必须将其限制在某个时间范围内,所以如果有人说,未来一年,他们不会看到这些重复的节目。但在某些时候,他们不得不(可能)重新生成。

+1

您通常会使用“例外”事件取消/更改重复中的一个事件。 – 2009-07-12 14:47:34

+0

嗯..没想过! – Mez 2009-07-12 16:07:59