簡體   English   中英

重復“事件”(日歷)

[英]Repeating “Events” (Calendar)

我目前正在開發一個應用程序,允許人們為在線廣播電台安排“節目”。

我希望用戶能夠設置重復的事件,比如說: -

“狂歡星期一”節目 - 每周一從9-11“月中瘋狂” - 每月的第二個星期四“這個月的新音樂” - 每個月的第一天。

在您看來,這是建模的最佳方式(基於MVC / MTV結構)。

注意:我實際上是在Django編碼。 但我對它背后的理論更感興趣,而不是具體的實現細節。

啊,重復的事件 - 我生命中的一個禍根,以及時區。 日歷很難

可能希望根據RFC2445對此進行建模 但是,這可能會給你帶來更大的靈活性和復雜性,而不是你真正想要的。

需要考慮的一些事項:

  • 在給定日期,您是否需要比特定時間更精細的粒度? 如果你需要根據時間重復,它會變得更加棘手。
  • 考慮日期角落案例,例如“每月30日”以及這對閏年意味着什么
  • 考慮時間角落情況,例如“每天凌晨1點30分” - 有時上午1點30分可能會發生兩次,有時可能根本不會發生,因為夏令時
  • 您是否需要與其他時區的人分享時間表? 這讓生活變得更加棘手
  • 您是否需要表示事件發生的次數或事件發生的最終日期? (基本上是“計數”或“直到”。)您可能不需要,或者您可能需要一個或兩個。

我意識到這是一個需要考慮的事情列表,而不是一個確定的答案,但我認為在您嘗試制定解決方案之前定義問題的參數很重要。

通過閱讀其他帖子,Martin Fowler描述了反復出現的最佳事件。 http://martinfowler.com/apsupp/recurring.pdf

有人為Java實現了這些類。 http://www.google.com/codesearch#vHK4YG0XgAs/src/java/org/chronicj/DateRange.java

我曾經想過,在保存原始事件時,應該使用新模型生成重復事件。 這意味着我不會在每次加載日歷時進行隨機處理(例如,我也可以取消一個系列中的“Show”),但也意味着我必須將其限制在某個時間范圍內,所以如果有人說,未來一年,他們就不會看到這些重復的節目。 但在某些時候,他們必須(可能)重新生成。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM