C# Snippets

Fragmentos de timestamp Unix en C#

Ejemplos de C# para segundos epoch actuales, milisegundos, conversión con DateTimeOffset, salida ISO 8601 y parseo de timestamps desde cadenas de fecha.

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();

Conceptos básicos de marcas de tiempo en C#

El C# moderno debería usar DateTimeOffset para el trabajo con marcas de tiempo Unix. DateTimeOffset.UtcNow.ToUnixTimeSeconds() devuelve segundos Unix y ToUnixTimeMilliseconds() devuelve milisegundos compatibles con JavaScript.

Convertir valores DateTimeOffset

Usa FromUnixTimeSeconds o FromUnixTimeMilliseconds para convertir valores epoch en DateTimeOffset. Mantén el almacenamiento en UTC y formatea con el formato de ida y vuelta O cuando necesites una cadena ISO 8601.

Notas de producción para C#

DateTimeOffset suele ser más seguro que DateTime para el trabajo con marcas de tiempo porque mantiene un desfase adjunto al valor. Almacena instantes UTC para comparaciones y persistencia, y convierte a una zona horaria local solo para la visualización. Ten cuidado cuando las integraciones digan «tiempo epoch» sin nombrar segundos o milisegundos.

  • Usa DateTimeOffset.UtcNow.ToUnixTimeSeconds() para segundos Unix estándar
  • Usa ToUnixTimeMilliseconds() para valores compatibles con JavaScript
  • Usa FromUnixTimeSeconds() al leer valores de API documentados como segundos
  • Usa el formato O para cadenas ISO 8601 de ida y vuelta en registros y JSON

FAQ

¿El código de marcas de tiempo debería usar DateTime o DateTimeOffset?
Prefiere DateTimeOffset para el trabajo con marcas de tiempo Unix porque preserva el contexto de desfase. También expone ayudantes directos de segundos y milisegundos Unix.
¿Qué hace el formato O?
El formato O escribe un valor ISO 8601 de ida y vuelta. Es útil para logs, JSON y pruebas donde el instante exacto debe sobrevivir al análisis.
¿Cómo verifico una conversión en C#?
Convierte el valor de vuelta con DateTimeOffset.FromUnixTimeSeconds o FromUnixTimeMilliseconds, formatéalo con O y compara esa salida UTC con tu marca de tiempo esperada antes de guardar el valor.