Unix Timestamp in C# verstehen: Vom Zeitstempel zu DateTime und zurück

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einleitung: Warum Unix Timestamp mehr als nur eine Zahl ist

\n

Jeder Entwickler, der mit APIs, Datenbanken oder Logs arbeitet, stößt früher oder später auf den Unix Timestamp. Es ist eine ganze Zahl (oder eine Gleitkommazahl), die die Anzahl der Sekunden angibt, die seit dem 1. Januar 1970, 00:00:00 UTC vergangen sind – der sogenannten Unix-Epoche.

\n

Aber wenn Sie in einer Serverantwort die Zahl 1719878400 sehen, kann Ihr Gehirn nicht sofort sagen: „Aha, das ist der 2. Juli 2024.“ Wir müssen sie in ein vertrautes DateTime umwandeln. Und umgekehrt – ein Datum als Zeitstempel zur Übertragung speichern.

\n

Auf Stack Overflow hat die Frage „How can I convert a Unix timestamp to DateTime and vice versa?“ Hunderttausende von Aufrufen. Das bedeutet, dass selbst erfahrene C#-Entwickler manchmal über die Nuancen stolpern. In diesem Artikel geben wir nicht nur fertige Rezepte, sondern werfen auch einen Blick unter die Haube: Wir analysieren, wie DateTime, DateTimeOffset, Ticks und Zeitzonen funktionieren.

\n\n

Was ist ein Unix Timestamp eigentlich?

\n

Bevor wir Code schreiben, lassen Sie uns die Begriffe klären. Ein Unix Timestamp ist die Anzahl der Sekunden (manchmal Millisekunden) seit Mitternacht des 1. Januar 1970 UTC. Wichtig: Es ist ein absoluter Zeitpunkt, unabhängig von der Zeitzone. Deshalb ist er so praktisch für verteilte Systeme.

\n

In C# arbeiten wir mit zwei Haupttypen:

\n
    \n
  • DateTime – der klassische Typ, der sowohl in UTC als auch in lokaler Zeit (Eigenschaft Kind) vorliegen kann.
  • \n
  • DateTimeOffset – ein modernerer Typ, der explizit den Offset von UTC speichert. Wird für neue Projekte empfohlen.
  • \n
\n

Unter der Haube speichert DateTime die Anzahl der Ticks (100-Nanosekunden-Intervalle) seit dem 1. Januar 0001. Ein Unix Timestamp ist einfach die Anzahl der Sekunden seit 1970. Um von einem zum anderen zu gelangen, muss die Differenz zwischen diesen beiden Epochen berechnet werden.

\n\n

Konvertierung von Unix Timestamp in DateTime (und zurück) – grundlegende Methoden

\n

Ab .NET Framework 4.6 und .NET Core gibt es in C# integrierte Methoden, die das Leben erleichtern. Schauen wir sie uns an.

\n\n

1. Von Unix Timestamp (Sekunden) zu DateTime

\n

Der einfachste Weg ist die Verwendung von DateTimeOffset.FromUnixTimeSeconds(). Es gibt ein DateTimeOffset zurück, das dann in ein DateTime umgewandelt werden kann.

\n
long unixTimestamp = 1719878400; // 2. Juli 2024, 00:00:00 UTC\n\n// DateTimeOffset abrufen\nDateTimeOffset dateTimeOffset = DateTimeOffset.FromUnixTimeSeconds(unixTimestamp);\n\n// In DateTime (UTC) umwandeln\nDateTime utcDateTime = dateTimeOffset.UtcDateTime;\n\nConsole.WriteLine(utcDateTime); // 02.07.2024 0:00:00
\n

Wenn Sie die lokale Zeit benötigen (z. B. zur Anzeige für den Benutzer), verwenden Sie dateTimeOffset.LocalDateTime. Aber seien Sie vorsichtig: Die lokale Zeit hängt von den Einstellungen des Servers oder Computers ab.

\n\n

2. Von DateTime zu Unix Timestamp

\n

Die Rückkonvertierung erfolgt über die Methode ToUnixTimeSeconds() von DateTimeOffset.

\n
DateTime utcDateTime = new DateTime(2024, 7, 2, 0, 0, 0, DateTimeKind.Utc);\n\n// DateTimeOffset mit expliziter UTC-Angabe erstellen\nDateTimeOffset dateTimeOffset = new DateTimeOffset(utcDateTime);\n\nlong unixTimestamp = dateTimeOffset.ToUnixTimeSeconds();\n\nConsole.WriteLine(unixTimestamp); // 1719878400
\n

Es ist entscheidend: Geben Sie immer DateTimeKind.Utc an, wenn Sie ein DateTime erstellen, das Sie konvertieren möchten. Wenn Sie dies nicht tun, geht DateTimeOffset davon aus, dass die Zeit lokal ist, und Sie erhalten einen falschen Timestamp – mit einer Verschiebung um Ihre Zeitzone.

\n\n

3. Arbeiten mit Millisekunden

\n

Manchmal wird der Timestamp in Millisekunden übermittelt (z. B. aus JavaScript). Dafür gi

Blogs

Buchempfehlungen