C# Snippets

C#-Unix-Timestamp-Snippets

C#-Beispiele für aktuelle Epoch-Sekunden, Millisekunden, DateTimeOffset-Umwandlung, ISO-8601-Ausgabe und das Parsen von Timestamps aus Datums-Strings.

Current Unix timestamp (seconds)
DateTimeOffset.UtcNow.ToUnixTimeSeconds()
Current Unix timestamp (milliseconds)
DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()
DateTimeOffset from Unix timestamp
DateTimeOffset.FromUnixTimeSeconds(1700000000)
DateTimeOffset.FromUnixTimeMilliseconds(1700000000000)
ISO 8601 string from timestamp
DateTimeOffset.FromUnixTimeSeconds(1700000000)
    .UtcDateTime
    .ToString("O")
Timestamp from DateTimeOffset
var dt = DateTimeOffset.Parse("2023-11-15T06:13:20Z");
dt.ToUnixTimeSeconds();
dt.ToUnixTimeMilliseconds();

Grundlagen zu C#-Zeitstempeln

Modernes C# sollte für die Arbeit mit Unix-Zeitstempeln DateTimeOffset verwenden. DateTimeOffset.UtcNow.ToUnixTimeSeconds() gibt Unix-Sekunden zurück und ToUnixTimeMilliseconds() gibt JavaScript-kompatible Millisekunden zurück.

DateTimeOffset-Werte umwandeln

Verwende FromUnixTimeSeconds oder FromUnixTimeMilliseconds, um Epoch-Werte in DateTimeOffset umzuwandeln. Speichere in UTC und formatiere mit dem Round-Trip-Format O, wenn du einen ISO-8601-String brauchst.

Hinweise für den Produktiveinsatz von C#

DateTimeOffset ist für die Zeitstempelarbeit meist sicherer als DateTime, weil es einen Versatz am Wert behält. Speichere UTC-Zeitpunkte für Vergleiche und Persistenz und wandle nur zur Anzeige in eine lokale Zeitzone um. Sei vorsichtig, wenn Integrationen von „Epoch-Zeit“ sprechen, ohne Sekunden oder Millisekunden zu nennen.

  • Verwende DateTimeOffset.UtcNow.ToUnixTimeSeconds() für Standard-Unix-Sekunden
  • Verwende ToUnixTimeMilliseconds() für JavaScript-kompatible Werte
  • Verwende FromUnixTimeSeconds() beim Lesen von API-Werten, die als Sekunden dokumentiert sind
  • Verwende das Format O für Round-Trip-ISO-8601-Strings in Logs und JSON

FAQ

Sollte Zeitstempel-Code DateTime oder DateTimeOffset verwenden?
Bevorzuge DateTimeOffset für die Arbeit mit Unix-Zeitstempeln, da es den Offset-Kontext bewahrt. Es bietet außerdem direkte Helfer für Unix-Sekunden und -Millisekunden.
Was bewirkt das O-Format?
Das O-Format schreibt einen verlustfreien ISO-8601-Wert. Es ist nützlich für Logs, JSON und Tests, in denen der exakte Zeitpunkt das Parsen überleben soll.
Wie überprüfe ich eine C#-Umrechnung?
Wandle den Wert mit DateTimeOffset.FromUnixTimeSeconds oder FromUnixTimeMilliseconds zurück, formatiere ihn mit O und vergleiche diese UTC-Ausgabe mit deinem erwarteten Zeitstempel, bevor du den Wert speicherst.