2012-04-26 10 views
1

爲什麼.NET中的TimeZoneInfo類會顯示印第安納州遵守夏令時?我一直認爲印第安納州的部分地區是EST。我是否應該使用除「美國東部標準時間」之外的東西來代表那些不遵守DST的印第安納州部分?印第安那州的.NET TimeZoneInfo對象顯示他們觀察到DST?

Dim timeZones As New List(Of String)() 
With timeZones 
    .Add("Eastern Standard Time") ' Eastern TZ, except parts of Indiana 
    .Add("US Eastern Standard Time") ' parts of Indiana? 
End With 

For Each tz In timeZones 
    Dim tzi As TimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(tz) 
    buf.AppendLine(tz) 
    buf.AppendFormat("SupportsDaylightSavingTime: {0}", tzi.SupportsDaylightSavingTime).AppendLine() 
    buf.AppendFormat("DisplayName: {0}", tzi.DisplayName).AppendLine() 
    buf.AppendFormat("StandardName: {0}", tzi.StandardName).AppendLine() 
    buf.AppendFormat("DaylightName: {0}", tzi.DaylightName).AppendLine() 
    buf.AppendFormat("IsDaylightSavingTime: {0}", tzi.IsDaylightSavingTime(DateTime.Now)).AppendLine() 
    buf.AppendFormat("Current Local Time: {0}", TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, tzi)).AppendLine() 
    buf.AppendFormat("Current UTC Time: {0}", DateTime.UtcNow).AppendLine() 
    buf.AppendLine() 
Next 

結果:

Eastern Standard Time 
SupportsDaylightSavingTime: True 
DisplayName: (UTC-05:00) Eastern Time (US & Canada) 
StandardName: Eastern Standard Time 
DaylightName: Eastern Daylight Time 
IsDaylightSavingTime: True 
Current Local Time: 4/26/2012 10:37:08 AM 
Current UTC Time: 4/26/2012 2:37:08 PM 

US Eastern Standard Time 
SupportsDaylightSavingTime: True 
DisplayName: (UTC-05:00) Indiana (East) 
StandardName: US Eastern Standard Time 
DaylightName: US Eastern Daylight Time 
IsDaylightSavingTime: True 
Current Local Time: 4/26/2012 10:37:08 AM 
Current UTC Time: 4/26/2012 2:37:08 PM 

回答

1

根據Wikipedia"What time is it in Indiana",整個印第安納州的現在觀察DST - 但無論哪種中部或東部時間。

所以沒有「印第安納州的一次」,但它遵守日光節約一些形式或其他地方。如果你在2005年之前回去(是的 - 上面的頁面對我來說不是很清楚),你可能會或可能不會發現Windows時區數據庫正確建模歷史。我期望tzdb database有更全面的信息......有不同印第安納州的時區ID(例如美國/印第安納州/諾克斯,美國/印第安納州/彼得堡等)

+0

謝謝喬恩!所以答案基本上是「美國東部標準時間」是印第安納州過去不做DST的部分的正確時區標識,並且在2005年發生了變化,他們現在做了DST,但我沒有得到備忘錄。 – mattmc3 2012-04-26 15:21:09

+0

@ mattmc3:也許吧。這取決於它們中的任何一個現在是否真的在中央時間。這很複雜,顯然:) – 2012-04-26 15:21:52

+0

嗯,我通過郵政編碼分時區,而不是狀態(這也不是真的準確,但足夠我的目的),所以有很多狀態(12)與雙時區,所以我得到了印第安納州的CST,但是擔心夏令時。是的,這是複雜的方式,我只是在處理美國的時區。 – mattmc3 2012-04-26 15:34:02