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.
DateTimeOffset.UtcNow.ToUnixTimeSeconds()DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()DateTimeOffset.FromUnixTimeSeconds(1700000000)
DateTimeOffset.FromUnixTimeMilliseconds(1700000000000)DateTimeOffset.FromUnixTimeSeconds(1700000000)
.UtcDateTime
.ToString("O")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.