2009-06-17 60 views
10

是否有公佈的數據結構用於存儲定期或重複日期?可以處理的東西:什麼是定期或重複日期的好數據結構?

  1. 泵需要每五天回收一次。
  2. 發薪日是每個星期五。
  3. 感恩節是十月的第二個星期一(美國:十一月的第四個星期四)。
  4. 情人節是每2月14日。
  5. 冬至(通常)每6月21日和12月21日。
  6. 復活節是在春分日或之後的第一個滿月之後的星期日(好吧,這是一個有點延伸)。

我認爲cron的內部數據結構可以處理#1,#4,#5(兩條規則),也許#2,但我沒有看過它。 MS Outlook和其他日曆似乎能夠處理前五個,但我沒有那個源代碼。

+0

這可能有所幫助:http://stackoverflow.com/questions/85699/whats-the-best-way-to-model-recurring-events-in-a-calendar-application – molf 2009-06-17 22:42:54

+0

謝謝。如果我剛剛搜索「經常性」而不是「經常性日期」,我會發現一大堆問題。 – yukondude 2009-06-17 22:47:37

回答

0

通過指定重現的方式的所有這些變化,我會避開單個數據結構實現來適應所有5種情況。

相反,我會(併爲以前的項目)建立簡單的結構,解決每種類型的重複。你可以將它們全部包裝起來,以使它感覺像是一個單一的數據結構,但是它們可以做任何他們喜歡的事情。通過實現一個接口,我能夠以類似的方式處理每種類型的重複,因此感覺就像是一個適合所有人的數據結構。我可以在任何時間範圍內詢問任何情況下的復發日期,並且這樣做。

我也想知道更多關於這些日期需要如何使用之前解決具體實施。

+0

是的,我認爲你需要一套聯合的數據結構,因爲表達重現的方式是如此不同。然後,您需要一個可以查詢的界面,以查找某天或某幾天是否與任何重複發生匹配。在回答你的問題時,這些日期將被用於預訂電話/視頻/網絡會議,其中一些與國家假期相符,因此是「十月份的第二個星期一」業務。 – yukondude 2009-06-17 23:36:34

0

如果你想動手創建一個數據結構,我推薦一個散列表(其中假期或事件是新的日期出現值的鍵),如果有每個事件的多重性,你可以對在鏈表中找到一個節的值進行散列處理,然後得到所有出現的列表(這將使查找以及插入在O(1)中運行)。

相關問題