.NET Ticks Converter

.NET Ticks zu Unix-Timestamp-Konverter

Wandle .NET Ticks in Unix-Zeit um — mit exakter Formel und Unterstützung großer Werte. Ausgabe in Sekunden, Millisekunden, ISO 8601 und lesbarem Format.

100-ns-Intervalle seit 01.01.0001

Aktuelle Zeit — .NET-DateTime.Ticks
Unix-Timestamp (s)

Was sind .NET-Ticks?

In .NET messen DateTime.Ticks und TimeSpan.Ticks die Zeit in 100-Nanosekunden-Einheiten. Ein DateTime-Tick-Zähler ist die Anzahl der 100-Nanosekunden-Intervalle seit 00:00:00 am 1. Januar 0001 im proleptischen gregorianischen Kalender.

  • Epoche: 0001-01-01 00:00:00
  • Auflösung: 100-Nanosekunden-Ticks (10.000.000 pro Sekunde)
  • Ein heutiger Wert liegt bei etwa 6,4 × 10^17
  • C#: DateTime.UtcNow.Ticks, DateTimeOffset.UtcNow.Ticks

.NET-Ticks in einen Unix-Zeitstempel umwandeln

Zwischen 0001-01-01 und 1970-01-01 liegen 62.135.596.800 Sekunden. Teile die Ticks durch 10.000.000, um Sekunden seit dem Jahr 1 zu erhalten, und subtrahiere dann diesen Versatz.

  • Unix seconds = Ticks / 10000000 − 62135596800
  • Unix milliseconds = Ticks / 10000 − 62135596800000
  • Beispiel: 638355968000000000 → 1700000000 → 2023-11-14 22:13:20 UTC
  • In C#: new DateTimeOffset(dt).ToUnixTimeSeconds() erledigt das für dich

C#-Code und Sonderfälle

Modernes .NET bietet DateTimeOffset.ToUnixTimeSeconds() und ToUnixTimeMilliseconds() sowie DateTimeOffset.FromUnixTimeSeconds() für die Gegenrichtung. Verwende Ticks nur direkt, wenn du mit serialisierten Daten interoperierst. Beachte: DateTime.Ticks ignoriert die DateTimeKind, normalisiere daher immer zuerst auf UTC.

  • C#: var unixSeconds = new DateTimeOffset(dt.ToUniversalTime()).ToUnixTimeSeconds();
  • C#: var dt = DateTimeOffset.FromUnixTimeMilliseconds(ms).UtcDateTime;
  • Ticks von 0 = 0001-01-01; DateTime.MaxValue.Ticks = 3155378975999999999
  • Werte überschreiten die sicheren Ganzzahlen von JavaScript, daher verwendet dieser Konverter BigInt

Verwandte Zeitstempelformat-Konverter

Hinweise zu Bibliotheken und Serialisierung

Ticks tauchen in älteren .NET-Serialisierungsformaten und JSON-Konventionen auf. Achte auf:

  • Veraltete Microsoft-JSON-Daten: "/Date(1700000000000+0000)/" umschließen Millisekunden (keine Ticks)
  • DateTimeOffset.UnixEpoch ist der Standard-Nullpunkt im modernen .NET
  • DateTime.MaxValue.Ticks = 3155378975999999999; so hohe Werte deuten fast sicher auf einen „nie“-Platzhalter hin
  • TimeSpan.Ticks ist dieselbe Einheit, aber als Dauer gemessen; ziehe nicht blind einen DateTime-Tick von einem TimeSpan-Tick ab
  • Newtonsoft.Json und System.Text.Json verwenden standardmäßig ISO 8601 — bevorzuge das gegenüber rohen Ticks, wenn du die Wahl hast

FAQ

Wie viele Ticks sind in einer Sekunde?
Genau 10.000.000 Ticks — jeder Tick sind 100 Nanosekunden.
Was ist der Unterschied zwischen .NET-Ticks und Windows FILETIME?
Beide verwenden 100-Nanosekunden-Einheiten, aber .NET-Ticks zählen ab dem 0001-01-01, während FILETIME ab dem 1601-01-01 zählt. Sie unterscheiden sich um einen festen Versatz von 504.911.232.000.000.000 Ticks.
Wie erhalte ich Unix-Zeit aus einem C#-DateTime?
Verwende new DateTimeOffset(dateTime.ToUniversalTime()).ToUnixTimeSeconds() oder .ToUnixTimeMilliseconds().