2011-10-13 45 views
1

我有一個好奇的問題。我可以很容易地解決這個問題,但不能完全弄清楚如何編寫代碼。我的問題涉及時區。我有一個應用程序可以在一天中的某個時間段內工作。它處理的數據是特定於時區的數據。我想以分鐘計算處理窗口的整體「寬度」。如何從重疊的時間範圍獲得分鐘

說他們窗格是從上午9點到中午。窗格寬180分鐘。我有時區-4,-5,-6,-7和-10的數據。由於窗格寬度與偏移量相同,因此我將處理窗口的「寬度」計算爲9 x 60或360分鐘。

我正在用C#寫這篇文章。我有一些代碼開始處理這個問題,但我不知道如何表示輸入。有什麼建議麼?

+0

聽起來像你需要'TimeSpan'和'DateTimeOffset',雖然我不完全理解你的描述。 – Oded

+0

什麼是窗格和什麼是抵消? –

+0

該窗格只是一段時間。例如09:00至12:00。偏移量是時區偏移量。例如,GMT的-5是中央時間。 –

回答

0

我想你想要做的是採取的最早的時​​候開始,最新時間結束,並使用DateTimeOffset得到的差異。是這樣的:

//1/1/2011 9:00 AM -4 
var earliest = new DateTimeOffset(2011, 1, 1, 9, 0, 0, new TimeSpan(-4, 0, 0)); 
//1/1/2011 12:00 PM -10 
var latest = new DateTimeOffset(2011, 1, 1, 12, 0, 0, new TimeSpan(-10, 0, 0)); 
Console.Out.WriteLine("minutes = {0}", (latest - earliest).TotalMinutes); 

這產生540 180分鐘這兩個之間的時間,再加上一個附加的360分鐘爲時區差的結果。如果小時數完全相同,則360是-4和-10時區之間的差值。如果這不是您想要的,請更新您的問題以添加更多詳細信息/方案。

+0

我唯一需要注意的是如果太平洋時區沒有任何工作或窗格變窄。然後,你必須考慮到這個差距。 –

相關問題