2011-07-04 30 views
1

我在將時間從倫敦(UTC/UTC + 1)轉換爲美國東部時間(UTC-5/UTC-4)時遇到問題。TimeZoneInfo錯誤?

隨着在其UTC + 1個相在倫敦機中運行的代碼,

TimeZoneInfo.ConvertTimeFromUtc(DateTime.Now.ToUniversalTime(), TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time")); 

這將正確地轉換到十四時25分○○秒從6點25分00秒UTC + 1至UTC-7

但是,如果時區是美國東部

TimeZoneInfo.ConvertTimeFromUtc(DateTime.Now.ToUniversalTime(), TimeZoneInfo.FindSystemTimeZoneById("US Eastern Standard Time")); 

這將錯誤轉換14點25分00秒至8時25分○○秒從UTC + 1爲UTC-4

此外,

TimeZoneInfo.FindSystemTimeZoneById("US Eastern Standard Time").SupportsDaylightSavingTime 

返回false而

TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time").SupportsDaylightSavingTime 

返回true。

這是在.NET 3.5下運行的。有什麼想法嗎?

回答

0

它確實看起來像一個錯誤,無論是在你運行.NET的平臺上錯誤的時區信息;或.NET本身。在我看來,你應該在東部標準時間得到true

如果你會使用tz info數據庫,我相信你會得到較少的模糊結果。退房時間:http://www.codeproject.com/KB/dotnet/Using_time_zones_in_NET.aspx

,並詳細瞭解了開放區數據庫位置:http://en.wikipedia.org/wiki/Tz_database


另外的想法: 這是很難說什麼是錯誤在這裏。以東部標準時間爲例。根據定義,東部海岸的冬季時間,夏季東部標準時間並不存在。突然之間,該地區開始使用「東部夏令時」。

中歐在「中歐時間」和「中歐標準時間」之間交替出現的情況也是如此。圍繞時區命名的慣例非常混亂,而且也多次模棱兩可。我只能重複一遍,如果你可以爲你的平臺和編程語言找到一個可靠的tz數據庫API:使用它。