我有問題了解如何正確地將DateTime
轉換爲不同的時區。可以說,我想將DateTime
轉換爲時間:10:00(軍事)在美國東部時間到DateTime
(UTC)。將DateTime從特定時區轉換爲UTC - 錯過了小時?
這裏是我的嘗試:
DateTime unspecified = new DateTime(2013, 8, 15, 10, 0, 0, DateTimeKind.Unspecified);
var utc = TimeZoneInfo.ConvertTime(unspecified, TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"), TimeZoneInfo.Utc);
...我建構DateTime
與DateTimeKind.Unspecified
,因爲它既不UTC,也不當地時間(這是美國東部時間上午10點)。然後我將它傳遞給TimeZoneInfo.ConvertTime,告訴我這是EST中的DateTime
,我想將其轉換爲UTC。
由於EST is 5 hours behind of Coordinated Universal Time (UTC)我期望utc
等於{15.08.2013 15:00:00}
,然而當我運行上述餘碼,由於某種原因,得到{15.08.2013 14:00:00}
(即時間差爲4小時)。
問題是:爲什麼?這是一種白天節省時間的問題嗎?如果是這樣 - 如何在沒有白天節省時間的情況下獲得此轉換?
是的,夏令時是這個原因。不考慮它的簡單方法是簡單地使用'TimeZoneInfo'的'BaseUtcOffset':'新的DateTime(2013,8,15,10,0,0,DateTimeKind.Unspecified) .Subtract(TimeZoneInfo.FindSystemTimeZoneById (「東部標準時間」)。BaseUtcOffset);'但是,我不確定這是否會在某些特殊情況下出現,哪些可能會出現。 –