2013-10-14 75 views
0

我目前正在開發一個項目,要求用戶(在他們各自的時區)爲他們全天收到的某些通知設置一個「切斷」時間。例如,用戶會說,他們不希望在上午8:00之前,不晚於晚上7:30。該用戶位於CST(每個用戶的時區信息已保存),「服務器」位於EST中。該服務器是所有的邏輯判斷髮生了哪些用戶應通知等最好的比較不同時區之間時間的方法

什麼是對時間的一部分轉換隻爲比較的目的的最佳做法?

我現在的想法是採取由用戶設定的時間,說:「7:00 AM」,並創建一個完整的DateTime對象並存儲爲.ToUniversalTime()。在服務器上,我可以將DateTime對象轉換爲本地時間並僅比較時間部分。

沒有人有從別人誰也解決了類似的問題,一個「更好」的解決方案或可能有什麼建議?

謝謝!

+0

最好的辦法是將其轉換爲UTC然後比較 –

+0

我會說你是在正確的軌道上,但它是更好的做法,這樣做轉換爲UTC時間(而非本地時間),並與之比較的UTC時間。 – mayabelle

+0

.ToUniversalTime()確實轉換爲GMT/UTC。不確定以前的評論點。我會轉換到服務器的本地時間,因爲這會簡化事情。 –

回答

0

我建議您將最短時間和最長時間存儲爲當地時間,不含日期。您還需要存儲用戶的一般時區信息,例如「中央時間」,而不是CST或CDT。

當你準備做一個關於確定發送通知,當前UTC時間轉換爲用戶的本地時區,並比較存儲的時間範圍與轉換後的時間。

試圖創建一個從存儲的時間信息的完整的日曆日期將是在某些情況下有問題的,特別爲夏令變化。通過將UTC轉換爲用戶的當地時間進行比較,將避免該問題。