代码之家  ›  专栏  ›  技术社区  ›  Mez

重复“事件”(日历)

  •  6
  • Mez  · 技术社区  · 15 年前

    我目前正在开发一个应用程序,它允许人们为在线电台安排“节目”。

    我希望用户能够设置重复事件,例如:

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

    在您看来,什么是建模的最佳方法(基于MVC/MTV结构)。

    注意:我实际上是在Django中对它进行编码。但我更感兴趣的是它背后的理论,而不是具体的实现细节。

    3 回复  |  直到 10 年前
        1
  •  9
  •   Jon Skeet    15 年前

    啊,重复的事件——我生命中的一个悲剧,还有时区。日历是 坚硬的 .

    可以 希望以此为基础建立模型 RFC2445 . 然而,这可能会给你带来比你真正想要的更多的灵活性和复杂性。

    需要考虑的几个问题:

    • 您是否需要比给定日期上的特定时间更精细的粒度?如果你也需要根据时间来重复,那就变得更难了。
    • 考虑日期角的情况,比如“每月30号”以及闰年的含义。
    • 考虑时间角的情况,例如“每天1.30点”-有时1.30点可能会发生两次,有时由于日光节约时间,可能根本不会发生。
    • 你需要与其他时区的人共享日程安排吗?让生活变得更加艰难
    • 您需要表示事件发生的次数,还是事件发生的最后日期?(基本上是“计数”或“直到”)。您可能不需要其中一个,或者可能需要其中一个或两个。

    我意识到这不仅仅是一个确定的答案,而且是一个需要考虑的问题列表,但是我认为在你试图解决问题之前,定义你的问题的参数是很重要的。

        2
  •  1
  •   johndpope Sebastian Schuth    13 年前

    从阅读其他文章中,马丁·福勒最好地描述了反复发生的事件。 http://martinfowler.com/apsupp/recurring.pdf

    有人为Java实现了这些类。 http://www.google.com/codesearch#vHK4YG0XgAs/src/java/org/chronicj/DateRange.java

        3
  •  0
  •   Mez    15 年前

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