Speichern von Datum / Uhrzeit als UTC in der Datenbank

Ich speichere Datum und Uhrzeit in der Datenbank als UTC und berechne sie in meiner Anwendung anhand der spezifischen Zeitzone auf die Ortszeit zurück. Sagen wir zum Beispiel, ich habe das folgende Datum / die folgende Uhrzeit:

01/04/2010 00:00

Sagen Sie, es ist für ein Land, z. Großbritannien, das die Sommerzeit (DST) einhält, und zu dieser bestimmten Zeit sind wir in der Sommerzeit. Wenn ich dieses Datum in UTC konvertiere und es in der Datenbank speichere, wird es tatsächlich gespeichert als:

31/03/2010 23:00

Als Datum wird -1 Stunden für die Sommerzeit eingestellt. Dies funktioniert einwandfrei, wenn Sie die Sommerzeit zum Zeitpunkt der Übermittlung beobachten. Was passiert jedoch, wenn die Uhr zurückgestellt wird? Wenn ich dieses Datum aus der Datenbank ziehe und in die Ortszeit konvertiere, wird diese bestimmte Datumszeit als @ angezeig31/03/2009 23:00 wenn in Wirklichkeit als @ verarbeitet wur01/04/2010 00:00.

Korrektur, wenn ich falsch liege, aber ist das nicht ein kleiner Fehler beim Speichern von Zeiten als UTC?

eispiel für eine Zeitzonenumwandlu

rundsätzlich speichere ich das Datum und die Uhrzeit der Übermittlung von Informationen an mein System, damit Benutzer ein @ ausführen könneAngebo Bericht. So speichere ich Datum und Uhrzeit:

public DateTime LocalDateTime(string timeZoneId)
{
    var tzi = TimeZoneInfo.FindSystemTimeZoneById(timeZoneId);
    return TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, tzi).ToUniversalTime().ToLocalTime(); 
}

Speichern als UTC:

var localDateTime = LocalDateTime("AUS Eastern Standard Time");
WriteToDB(localDateTime.ToUniversalTime());

Antworten auf die Frage(6)

Ihre Antwort auf die Frage