2013-02-02 85 views
-2

我正在調度模塊,我收到以下要求。 應該有能力創建:日曆實施,可重複的事件,建築師的方法

  1. 非重複事件
  2. 每日重複事件
  3. 活動,將在選定的日子一週重複(如星期一,星期二,等等)
  4. 每週多次事件
  5. 每月重複事件

,並從系列刪除一個事件的能力。

從一方面來說,我認爲在網站方面實現這一點,而不使用像Google日曆這樣的API(如果API會關閉,這種依賴會導致整個應用程序崩潰)。

從另一方面,這可能需要一些資源(恐怕是關於時間我可能可以在此花費,有關服務器資源太)

我認爲讓兩個表:

  1. event表中,將包含下列屬性的事件:
    1. TIME_START - 時間,當活動開始
    2. TIME_END - 時間,在事件結束
    3. DATE_START - 日期,當事件(或事件系列開始)
    4. DATE_END - 日期,當事件(或事件系列停止)
    5. 重複 - 介紹重複邏輯事件,可以具有以下值:
      • NO_REPEAT
      • REPEAT_DAILY
      • REPEAT_WEEKLY
      • REPEAT_MONTHLY
  2. event_cancel表格,其中將包含事件不應出現在日曆上的日期&次(例如,每天設置事件)
    1. EVENT_ID
    2. 日期
    3. 重複
      • NO_REPEAT - 取消一個事件次數
      • REPEAT_WEEKLY - 取消事件次數爲指定日

所以,最後我會必須做出相當大的計算......

也許有人會建議給PHP的一些不同的解決方案(甚至在不同的語言,我很感興趣的是想法,反正我將不得不採取任何解決我的應用程序)?

+2

請閱讀我對這個問題的回答; http://stackoverflow.com/questions/14659569/display-recurring-dates-from-sql-database-using-php/14660169#14660169 – thaJeztah

+0

非常感謝你,你爲我節省了很多時間。非常有用的帖子。 – avasin

+0

如果這些信息回答了您的問題,讓我知道,我將它移動到一個答案 – thaJeztah

回答

2

最好的辦法是使用的iCalendar。看看RFC 5545,它涵蓋了所有的用例(還有更多),並且有不同語言的一些實現。

,除非你要不要重新發明輪子。

+0

不知道,這是我將使用的方式(不知道在web服務上使用是可以的),但無論如何 - 非常感謝你,從來沒有使用過它,會閱讀有關文檔,似乎很有趣! – avasin

+1

取決於'webservice'的意思,但也有很多iCalendar服務器的實現,您應該看一下。它已經存在了好幾年了,非常強大。它還處理時區比當前的解決方案好一點(例如,開始時間和結束時間以及開始時間和持續時間有差異)。 – jgm

+0

嗯..好吧,我會看。謝謝。 – avasin