2010-09-21 46 views
2

好奇人們如何解決這個問題... 我有一系列的工作,一夜之間運行,根據當天的數據爲客戶彙總報告。他們現在要求提供時區支持。你如何處理數據處理的時區?

其中一個報告是..你昨晚有多少個訂單,但是昨晚可能因時區不同而不同。組織或處理數據的最佳方式是什麼,以便將時區考慮在內以使工作更輕鬆?

謝謝

回答

3

在UTC時區中表示所有日期是一種很好的做法。這個時區沒有令人困惑的夏令時。然後,美國/太平洋時區的客戶可以要求提供2010年至2009年至2013年間的訂單報告:00-700至2010-09-21T00:00-700(使用ISO 8601 format)。程序的輸入層應該將客戶日期和存儲的訂單日期都轉換爲UTC以來的時間,然後從那裏開始。

+0

數據不是動態提取的,它運行在夜間作業上。因此,如果訂單在12:01太平洋標準時出現,它將在第二天的運行中處理。 – James 2010-09-21 19:42:58

+0

無論何時拉動數據,您的時區行爲應該都是相同的。用戶使用明確的時區輸入日期,並且您的代碼所做的第一件事是將其轉換爲自UTC時代以來的秒數。從那時起,它就是同一時間線上的所有整數。明白了嗎? – 2010-09-22 20:16:22

1

在我的應用程序中,我保存當地時間加上抵消到UTC。這樣,我仍然可以在代碼中比較這些值(通過將它們轉換爲通用時間),但是當我將它顯示在屏幕上時,用戶將看到他們期望的時間(「是的,我昨天晚上9:30就做到了這一點)」 。使用開關,他們可以顯示時區或切換到通用時間或在當地時間顯示所有時間。

+0

這將用於需要離線處理並彙總爲摘要數據的每日TB數據。 – James 2010-09-21 19:43:34

+0

我請你原諒? – 2010-09-22 09:21:14

0

根據我的經驗,我們在夜間運行期間將數據彙總到小時(或15分鐘)的桶中。然後,您可以根據用戶請求的報告時區來抓取相關的存儲桶。