【问题标题】:Repeating "Events" (Calendar)重复“事件”(日历)
【发布时间】:2010-11-10 02:21:01
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: events date calendar


    【解决方案1】:

    通过阅读其他帖子,Martin Fowler 将重复事件描述得最好。 http://martinfowler.com/apsupp/recurring.pdf

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

    【讨论】:

      【解决方案2】:

      啊,重复的事件 - 我生命中的祸根之一,还有时区。日历是困难

      可能希望根据RFC2445 对此进行建模。但是,这很可能会为您提供比您真正想要的更多的灵活性和复杂性。

      需要考虑的几点:

      • 您是否需要比给定日期的特定时间更精细的粒度?如果您还需要根据时间重复,那就更麻烦了。
      • 考虑日期极端情况,例如“每月 30 日”以及闰年的含义
      • 考虑时间极端情况,例如“每天上午 1.30” - 由于夏令时,有时上午 1.30 可能会出现两次,有时可能根本不会出现
      • 您需要与其他时区的人共享日程安排吗?这让生活再次变得更加棘手
      • 您是否需要表示事件发生的次数或事件发生的最终日期? (基本上是“计数”或“直到”。)您可能不需要任何一个,或者您可能需要一个或两个。

      我意识到这是一个需要考虑的事项列表,而不是一个明确的答案,但我认为在尝试制定解决方案之前定义问题的参数很重要。

      【讨论】:

      • 一些很棒的 cmets...即使不是一个明确的答案。
      【解决方案3】:

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

      【讨论】:

      • 您通常会使用“异常”事件取消/更改重复事件中的一个事件。
      • 嗯..没想到!
      猜你喜欢
      • 2018-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-15
      • 2012-04-26
      • 1970-01-01
      • 1970-01-01
      • 2013-04-17
      相关资源
      最近更新 更多