.NET Ticks Converter

Convertidor de .NET Ticks a timestamp Unix

Convierte .NET Ticks a tiempo Unix con la fórmula exacta y soporte para valores grandes. Salida en segundos, milisegundos, ISO 8601 y formato legible.

intervalos de 100 ns desde el 01-01-0001

Hora actual — Ticks de .NET DateTime
Timestamp Unix (s)

¿Qué son los ticks de .NET?

En .NET, DateTime.Ticks y TimeSpan.Ticks miden el tiempo en unidades de 100 nanosegundos. Un recuento de ticks de DateTime es el número de intervalos de 100 nanosegundos desde las 00:00:00 del 1 de enero de 0001 en el calendario gregoriano proléptico.

  • Época: 0001-01-01 00:00:00
  • Resolución: ticks de 100 nanosegundos (10.000.000 por segundo)
  • Un valor actual ronda 6,4 × 10^17
  • C#: DateTime.UtcNow.Ticks, DateTimeOffset.UtcNow.Ticks

Cómo convertir ticks de .NET a una marca de tiempo Unix

Hay 62.135.596.800 segundos entre 0001-01-01 y 1970-01-01. Divide los ticks entre 10.000.000 para obtener segundos desde el año 1 y luego resta ese desfase.

  • Unix seconds = Ticks / 10000000 − 62135596800
  • Unix milliseconds = Ticks / 10000 − 62135596800000
  • Ejemplo: 638355968000000000 → 1700000000 → 2023-11-14 22:13:20 UTC
  • En C#: new DateTimeOffset(dt).ToUnixTimeSeconds() lo hace por ti

Código C# y casos límite

El .NET moderno ofrece DateTimeOffset.ToUnixTimeSeconds() y ToUnixTimeMilliseconds(), y DateTimeOffset.FromUnixTimeSeconds() para la dirección inversa. Usa los ticks directamente solo al interoperar con datos serializados. Ten en cuenta que DateTime.Ticks ignora el DateTimeKind, así que normaliza siempre primero a UTC.

  • C#: var unixSeconds = new DateTimeOffset(dt.ToUniversalTime()).ToUnixTimeSeconds();
  • C#: var dt = DateTimeOffset.FromUnixTimeMilliseconds(ms).UtcDateTime;
  • Ticks de 0 = 0001-01-01; DateTime.MaxValue.Ticks = 3155378975999999999
  • Los valores superan los enteros seguros de JavaScript, por eso este conversor usa BigInt

Conversores de formato de marca de tiempo relacionados

Notas sobre bibliotecas y serialización

Los ticks aparecen en formatos de serialización de .NET antiguos y en convenciones JSON. Atención a:

  • Fechas JSON heredadas de Microsoft: "/Date(1700000000000+0000)/" envuelven milisegundos (no ticks)
  • DateTimeOffset.UnixEpoch es el punto cero estándar en el .NET moderno
  • DateTime.MaxValue.Ticks = 3155378975999999999; valores tan altos casi seguro indican un centinela de «nunca»
  • TimeSpan.Ticks es la misma unidad pero medida como duración; no restes a ciegas un tick de DateTime de un tick de TimeSpan
  • Newtonsoft.Json y System.Text.Json usan ISO 8601 por defecto — prefiérelo a los ticks crudos cuando puedas elegir

FAQ

¿Cuántos ticks hay en un segundo?
Exactamente 10 000 000 de ticks — cada tick son 100 nanosegundos.
¿Cuál es la diferencia entre los ticks de .NET y el FILETIME de Windows?
Ambos usan unidades de 100 nanosegundos, pero los ticks de .NET cuentan desde 0001-01-01 mientras que FILETIME cuenta desde 1601-01-01. Se diferencian en un desfase fijo de 504 911 232 000 000 000 de ticks.
¿Cómo obtengo el tiempo Unix a partir de un DateTime de C#?
Usa new DateTimeOffset(dateTime.ToUniversalTime()).ToUnixTimeSeconds() o .ToUnixTimeMilliseconds().