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
謝謝喬恩!所以答案基本上是「美國東部標準時間」是印第安納州過去不做DST的部分的正確時區標識,並且在2005年發生了變化,他們現在做了DST,但我沒有得到備忘錄。 – mattmc3 2012-04-26 15:21:09
@ mattmc3:也許吧。這取決於它們中的任何一個現在是否真的在中央時間。這很複雜,顯然:) – 2012-04-26 15:21:52
嗯,我通過郵政編碼分時區,而不是狀態(這也不是真的準確,但足夠我的目的),所以有很多狀態(12)與雙時區,所以我得到了印第安納州的CST,但是擔心夏令時。是的,這是複雜的方式,我只是在處理美國的時區。 – mattmc3 2012-04-26 15:34:02