2012-03-13 99 views
0

從昨天(美國當天節能調整的第一天開始),在兩臺不同計算機上運行的相同代碼給出了不同的結果。下面是代碼:C#UTC到本地時間轉換意外的結果

DateTime t = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(
      DateTime.UtcNow, r.timeZone); 

雖然這裏使用的時區是 「美國東部標準時間」

輸入(DateTime.UtcNow)爲2012/03/13 19時10分零零秒

在一個的Windows XP SP3的機器代碼返回:2012/03/13 14:10:00

在基於Windows Server 2008計算機相同的代碼返回:2012/03/13 15:10:00

這不是預期。有什麼想法嗎?

最好。

+1

您是否在兩臺計算機上安裝了所有Windows更新? – SLaks 2012-03-13 19:33:22

+0

愚蠢的問題,但你上週和一週進行了一次測試嗎? DST在本週末剛剛生效。 – 2012-03-13 19:34:54

+1

什麼是'Windows server 2007'? =)檢查是否所有的DST補丁都安裝在XP SP3中,我認爲XP返回錯誤的結果。 – Artem 2012-03-13 19:35:37

回答

4

XP的計算機上的當前時區是「美國東部標準時間」,而在服務器計算機上當前的時區是「美國東部夏令時間」。週日美國從標準時間變爲夏令時。也許XP機器需要更新其時區信息。

+0

XP機器的時區設置爲GMT-5,並針對夏令時進行了調整。目前顯示的時間是正確的。你認爲哪些信息需要更新? – Johnyy 2012-03-13 19:36:23

+0

@Johnyy:截至3月11日,東部時區的當前時間爲GMT-4。 XP機器沒有正確的夏令時轉換日期。在2007年,美國在夏令時進出時進行了改變,所以XP需要更新以反映這一點。 – Gabe 2012-03-13 19:44:27