2009-07-12 68 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

相關問題