C# TimeZoneInfo.ConvertTimeToUtc() funktioniert nicht für Zeiten vor dem ÜbergangC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 C# TimeZoneInfo.ConvertTimeToUtc() funktioniert nicht für Zeiten vor dem Übergang

Post by Anonymous »

C# .NET 8 scheint die Konvertierung der Ortszeiten in UTC für die Zeiten 12.00 Uhr bis 2.00 Uhr an Tagen mit Sommerzeitumstellung falsch zu handhaben. Z.B.

Code: Select all

    var fallBack = new DateOnly(2026, 10, 25);
var tzi = TimeZoneInfo.FindSystemTimeZoneById("Europe/London");
var oneAm = fallBack.ToDateTime(new TimeOnly(1, 0));
var utc = TimeZoneInfo.ConvertTimeToUtc(oneAm, tzi);

// wrong because transition occurs at 2am
Debug.Assert(!tzi.IsDaylightSavingTime(oneAm));

// wrong because utc should be midnight
Debug.Assert(utc.Hour != 0);
Das ist verwirrend, weil TimeZoneInfo.ConvertTimeToUtc() eine Ausnahme für unmögliche Ortszeiten (während des Spring Forward) auslöst, was den falschen Eindruck einer ordnungsgemäßen Handhabung von Übergangstagen erweckt.
Ich habe eine Problemumgehung, möchte diese aber hier, damit andere sie finden und alternative Lösungen finden.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post