.NET Ticks Converter

Convertitore da .NET Ticks a timestamp Unix

Converti .NET Ticks in tempo Unix con la formula esatta e supporto per valori grandi. Output in secondi, millisecondi, ISO 8601 e formato leggibile.

intervalli di 100 ns dal 01-01-0001

Ora corrente — Tick DateTime .NET
Timestamp Unix (s)

Cosa sono i tick di .NET?

In .NET, DateTime.Ticks e TimeSpan.Ticks misurano il tempo in unità da 100 nanosecondi. Un conteggio di tick DateTime è il numero di intervalli da 100 nanosecondi dalle 00:00:00 del 1° gennaio 0001 nel calendario gregoriano prolettico.

  • Epoca: 0001-01-01 00:00:00
  • Risoluzione: tick da 100 nanosecondi (10.000.000 al secondo)
  • Un valore attuale è circa 6,4 × 10^17
  • C#: DateTime.UtcNow.Ticks, DateTimeOffset.UtcNow.Ticks

Come convertire i tick di .NET in un timestamp Unix

Ci sono 62.135.596.800 secondi tra 0001-01-01 e 1970-01-01. Dividi i tick per 10.000.000 per ottenere i secondi dall'anno 1, poi sottrai quell'offset.

  • Unix seconds = Ticks / 10000000 − 62135596800
  • Unix milliseconds = Ticks / 10000 − 62135596800000
  • Esempio: 638355968000000000 → 1700000000 → 2023-11-14 22:13:20 UTC
  • In C#: new DateTimeOffset(dt).ToUnixTimeSeconds() lo fa per te

Codice C# e casi limite

Il .NET moderno offre DateTimeOffset.ToUnixTimeSeconds() e ToUnixTimeMilliseconds(), e DateTimeOffset.FromUnixTimeSeconds() per la direzione inversa. Usa i tick direttamente solo quando interoperi con dati serializzati. Nota che DateTime.Ticks ignora il DateTimeKind, quindi normalizza sempre prima in UTC.

  • C#: var unixSeconds = new DateTimeOffset(dt.ToUniversalTime()).ToUnixTimeSeconds();
  • C#: var dt = DateTimeOffset.FromUnixTimeMilliseconds(ms).UtcDateTime;
  • Tick di 0 = 0001-01-01; DateTime.MaxValue.Ticks = 3155378975999999999
  • I valori superano gli interi sicuri di JavaScript, quindi questo convertitore usa BigInt

Convertitori di formato timestamp correlati

Note su librerie e serializzazione

I tick compaiono in vecchi formati di serializzazione .NET e convenzioni JSON. Attenzione a:

  • Date JSON Microsoft legacy: "/Date(1700000000000+0000)/" racchiudono millisecondi (non tick)
  • DateTimeOffset.UnixEpoch è il punto zero standard nel .NET moderno
  • DateTime.MaxValue.Ticks = 3155378975999999999; valori così alti indicano quasi certamente una sentinella «mai»
  • TimeSpan.Ticks è la stessa unità ma misurata come durata; non sottrarre alla cieca un tick DateTime da un tick TimeSpan
  • Newtonsoft.Json e System.Text.Json usano ISO 8601 per impostazione predefinita — preferiscilo ai tick grezzi quando puoi scegliere

FAQ

Quanti tick ci sono in un secondo?
Esattamente 10.000.000 di tick — ogni tick è 100 nanosecondi.
Qual è la differenza tra i tick di .NET e il FILETIME di Windows?
Entrambi usano unità di 100 nanosecondi, ma i tick di .NET contano dal 0001-01-01 mentre FILETIME conta dal 1601-01-01. Differiscono di un offset fisso di 504.911.232.000.000.000 di tick.
Come ottengo il tempo Unix da un DateTime C#?
Usa new DateTimeOffset(dateTime.ToUniversalTime()).ToUnixTimeSeconds() o .ToUnixTimeMilliseconds().