1

.NETのTimeZoneInfoクラスが、インディアナが夏時間を採用していることを示すのはなぜですか?私はいつもESTがいるインディアナの部分だと思いました。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
4

1 に答える 1

1

ウィキペディア「インディアナでは何時ですか」によると、インディアナ全体が現在DSTを監視していますが、中央時間または東部時間のいずれかです。

したがって、「インディアナで1回」ということはありませんが、どこでも何らかの形で夏時間を採用しています。2005年より前に戻った場合(上記のページは私にはそれほど明確ではありません)、Windowsタイムゾーンデータベースが履歴を正しくモデル化していることに気付く場合と見当たらない場合があります。tzdbデータベースにはより完全な情報があると思います...いくつかの異なるインディアナベースのタイムゾーンID(たとえば、アメリカ/インディアナ/ノックス、アメリカ/インディアナ/ピーターズバーグなど)

于 2012-04-26T14:46:02.050 に答える