內部部署應用程序我正在轉移到雲端,顯示來自json源的電視調度信息。核心數據使用從開始日期開始的幾秒鐘內的偏移量,因爲這些都是int UTC格式,所以它的開始時間都很好。應用程序依賴於英國在Azure中的夏令時問題
問題出現在移動到雲中。
的內部部署的應用程序是坐落在英國這樣的語言環境是UntedKingdom和電視的時間用正確的輸出
return programmeStart.AddHours(programmeStart.IsDaylightSavingTime() ? 1 : 0);
然而,現在已經遷移到雲中,IsDaylightSavingTime功能,不再返回由於數據中心是BST不可知的,因此屬實。
一直在絞盡腦汁想辦法對此進行排序。
是否有一種快速簡單的方法來設置託管服務在Azure中運行的區域設置,或者是創建擴展方法以讀取BST運行時的邊界並從中返回的最佳解決方案,然後返回true或假如從那裏例如
public static class DateTimeExtension
{
public static bool IsMyDaylightSavingTime(this DateTime timeToTest)
{
if(timeToTest >= GetConfig("bstStart") && timeToTest <= GetConfig("bstFinish"))
{
return true;
}
return false;
}
}
而保持配置值的bst改變他們移動?
感謝
Cheers Stuart 已去過 'programmeStart.AddHours(TimeZoneInfo.FindSystemTimeZoneById(「GMT標準時間」)) .IsDaylightSavingTime(programmeStart)?1:0);' – Brett 2011-05-23 09:25:02
當你有偏移量時,爲什麼要編碼1或0? programmeStart.AddHours(TimeZoneInfo.FindSystemTimeZoneById(「GMT標準時間」)。GetUtcOffset(DateTime.UtcNow))更有意義。它不僅清楚你所添加的內容,而且如果偏移量在某個時刻發生變化,這是未來的證明。順便說一句,當我已經指出你的答案並且你去接受別人的同樣答案時,拿走答案的積分並不是很好。 – dunnry 2011-05-23 14:13:19
與薩摩亞程序員不得不考慮的問題相比,我們所有的問題都沒有 - http://www.telegraph.co.uk/news/worldnews/australiaandthepacific/samoa/8503614/Samoa-leaps-dateline-how-time-zones -work.html :)我已經爲其他答案+1了,以試圖解決這個問題。在理想的解決方案中,我想我會混合使用這兩個答案 - 我將使用此答案中的FindSystemTimeZoneById和dunnry答案中的GetOffset。 – Stuart 2011-05-23 20:24:07