2011-02-03 121 views
1

我在看谷歌日曆,想知道他們是如何做他們的提醒。Google日曆如何進行提醒?

目前我只有一個日曆,他們選擇一個日期,當他們想要被通知。如果我想在幾小時和幾分鐘內做出提醒,這種情況不會很好地展開。

那麼他們是否像他們的數據庫中有一個像「小時,幾天,幾分鐘」那樣的字段作爲可能的字段?

還是他們存儲日期,他們只是查詢該日期和時間。因此,如果我想在我預約前一小時(比如說是2月3日下午3點),那麼他們只會在第二天下午2:00 pm存儲二月二日)

因此,他們會在2月3日下午2:00存儲並在小時查詢與當前小時匹配的日期?

回答

5

任何知道這些信息的人都不太可能在這樣的公共論壇上發現它。而不是找出谷歌日曆是如何工作的,我建議你考慮解決你的需求。除了其他任何東西,我懷疑你必須像Google日曆那樣擴展比例:)

你可能想要選擇將提醒的分鐘數作爲最低公分母來存儲 - 所以你應該存儲一個小時爲60分鐘。我懷疑用戶是否會介意他們是否進入60分鐘,並顯示爲一小時。

保存絕對時間在某些方面很有用(簡單查詢),但這意味着如果您更改開始日期/時間,還需要重新計算提醒日期/時間。

(正如我說的,這不是提供有關谷歌日曆如何做事任何提示。)

+0

@喬恩飛碟雙向 - 雅好,我懷疑會有人告訴我如何確切地工作,但也許有人可以理論他們如何做。所以你的方式總是存儲分鐘? – chobo2 2011-02-03 20:31:12

+0

@ chobo2:我認爲這取決於應用程序的其他部分如何工作,說實話。存儲*分鐘和絕對時間都有優點,但同樣也有其他優點。你如何發送通知? – 2011-02-03 21:24:40

0

這已經不是什麼好投機谷歌是如何做的;無論Google使用什麼,它都由一個真正龐大的服務器集羣提供支持,並且可能比您需要的要多得多。對於較小的應用程序,即使是企業級應用程序,也有直接的方法來完成此任務。

對於模式,我會將約會存儲爲普通日期/時間,並將提醒存儲爲另一個日期/時間(您可以使用TimeSpan結構計算給定的小時數和分鐘數),或者作爲Ticks的數量在TimeSpan中。兩者都有優點和缺點;使用日期/時間提醒,如果約會更改,則必須重新計算該日期/時間。但是,當存儲在模式中時,提醒時間是可讀的。將值存儲爲滴答的情況正好相反; TimeSpan中的15分鐘時間爲15分鐘,您可以將其添加到爲實際約會指定的任何日期時間。但是,這只是數據庫中的一個大數字,需要用戶使用您的應用程序來了解數據。

您可以在約會記錄本身存儲一個約會提醒,或者您可以通過維護引用預約記錄幷包含提醒時間的單獨表格來允許每個約會的許多預先計劃的提醒。

對於實際的提醒實現,您創建的用於處理這些提醒的應用程序(或其中的一項功能)應該向數據庫查詢當前用戶首先感興趣的第一個提醒,並將計時器設置爲在指定時間到期。該線程將簡單地休眠所需的毫秒數,然後觸發您將用於顯示提醒的事件。

0

我來這裏自己問這個問題。我個人的理論是,他們以某種方式設置了cron作業,以在設定的時間開火。但他們也必須能夠刪除/更新這些工作。我正在運行提醒樣式服務,我所做的最好的做法是每天運行一次計劃任務,以發送包含該日期的任何內容。我想提供更多的flexibilty,但沒有理論如何做到這一點,並推斷堆棧集體能想出更好的辦法比我有...