2013-08-29 28 views
1

我不得不DateTime從本地使用特定的時區轉換爲UTC的方法:轉換日期時間,使用時區有時UTC工作正確

TimeZoneInfo timeZone = FindSystemTimeZoneById(timeZoneId); 
DateTime dateTimeInUtc = TimeZoneInfo.ConvertTimeToUtc(localDateTime, timeZone); 
return dateTimeInUtc; 

但有時(我不知道什麼時候,爲什麼,但大部分它的工作時間正確)這種轉換不符合我的預期。
例如:

  • 時區是-5

enter image description here

  • 當地時間是08/28/2013 12:00:00 AMDateTimeKindUnspecified

enter image description here

那麼在這行代碼的值超過這個值後,你期望什麼?

DateTime dateTimeInUtc = TimeZoneInfo.ConvertTimeToUtc(localDateTime, timeZone); 

我希望UTC時間爲08/28/2013 5:00:00 AM。但

enter image description here

08/28/2013 4:00:00 AM。如果時區爲-5,則不會更正。


絕對相同的代碼在幾個月內正常工作。即使我看過調試器轉換是正確的。

大約2周前我遇到了與此代碼相同的問題(錯誤轉換)。但在第二天,問題消失了,沒有任何代碼更改。

回答

4

-5是基準UTC時差,但是在夏令時時間變化1小時到-4。

夏令時(美國)2013開始在凌晨2:00

週日,3月10日

週日,十一月結束於2:00 AM 3

在此期間,大多數州將其時鐘向前移動1小時(亞利桑那州除外)

+0

但在此期間,我將UTC轉換爲+5小時。 1周前,使用相同的代碼是5小時。 –

+0

@SergeyGavruk你使用什麼日期?一樣?或者您是否恰好在3月10日之前或11月3日之後使用了日期? – Alan

+0

hm。也許原因是因爲我的日期不在這個範圍內。謝謝 –