0

現在、タイムゾーンのUTC日時として保存されているDateTimeのリストがあります。UTCから現地の日時に変換する場合、および日付がDaylight Standard時間の開始に当たる場合、繰り返される時間は午前2時ではなく午前1時です。

UTCから現地時間に変換するために以下を使用します。午前1時がlocal1とlocal2で繰り返されることに注意してください。午前2時が繰り返されると思っていました。

どちらが正しい?

        TimeZoneInfo tz = TimeZoneInfo.FindSystemTimeZoneById("Mountain Standard Time");
        //UTC time
        var utc1 = new DateTime(1990, 10, 28, 7, 0, 0);     //This is start of daylight standard time.
        var utc2 = new DateTime(1990, 10, 28, 8, 0, 0);
        var utc3 = new DateTime(1990, 10, 28, 9, 0, 0);
        utc1 = DateTime.SpecifyKind(utc1, DateTimeKind.Utc);
        utc2 = DateTime.SpecifyKind(utc2, DateTimeKind.Utc);
        utc3 = DateTime.SpecifyKind(utc3, DateTimeKind.Utc);

        //Get the local time with adjustment for Daylight standard time, "fall back"
        var local1 = TimeZoneInfo.ConvertTimeFromUtc(utc1, tz); //Returns 1am
        var local2 = TimeZoneInfo.ConvertTimeFromUtc(utc2, tz); //Returns 1am. Should this be 2am?
        var local3 = TimeZoneInfo.ConvertTimeFromUtc(utc3, tz); //Returns 2am
4

1 に答える 1

1

午前2時に、午前1に「フォールバック」します(1:59-> 1)。したがって、午前1が繰り返され、午前2は1時間後にのみ発生します。同様に、「スプリングフォワード」の場合、午前2時はありません(1:59-> 3)

出典:http ://aa.usno.navy.mil/faq/docs/daylight_time.php (米国海軍天文台は米国のDoD公式時間を保持しています(そのための出典:http ://www.usno.navy.mil/USNO/時間))

于 2012-06-18T19:45:40.200 に答える