Trechos de timestamp Unix em C#
Exemplos de C# para segundos epoch atuais, milissegundos, conversão com DateTimeOffset, saída ISO 8601 e parsing de timestamps a partir de strings de data.
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();Noções básicas de marcas de tempo em C#
O C# moderno deve usar DateTimeOffset para o trabalho com marcas de tempo Unix. DateTimeOffset.UtcNow.ToUnixTimeSeconds() retorna segundos Unix e ToUnixTimeMilliseconds() retorna milissegundos compatíveis com JavaScript.
Convertendo valores DateTimeOffset
Use FromUnixTimeSeconds ou FromUnixTimeMilliseconds para converter valores epoch em DateTimeOffset. Mantenha o armazenamento em UTC e formate com o formato de ida e volta O quando precisar de uma string ISO 8601.
Notas de produção para C#
DateTimeOffset costuma ser mais seguro que DateTime para o trabalho com marcas de tempo porque mantém um deslocamento anexado ao valor. Armazene instantes UTC para comparações e persistência e converta para um fuso local apenas para exibição. Tenha cuidado quando integrações disserem «tempo epoch» sem nomear segundos ou milissegundos.
- Use DateTimeOffset.UtcNow.ToUnixTimeSeconds() para segundos Unix padrão
- Use ToUnixTimeMilliseconds() para valores compatíveis com JavaScript
- Use FromUnixTimeSeconds() ao ler valores de API documentados como segundos
- Use o formato O para strings ISO 8601 de ida e volta em logs e JSON
FAQ
- O código de marcas de tempo deve usar DateTime ou DateTimeOffset?
- Prefira DateTimeOffset para o trabalho com marcas de tempo Unix porque preserva o contexto de deslocamento. Ele também expõe auxiliares diretos de segundos e milissegundos Unix.
- O que o formato O faz?
- O formato O escreve um valor ISO 8601 de ida e volta. É útil para logs, JSON e testes onde o instante exato deve sobreviver à análise.
- Como verifico uma conversão em C#?
- Converta o valor de volta com DateTimeOffset.FromUnixTimeSeconds ou FromUnixTimeMilliseconds, formate-o com O e compare essa saída UTC com a marca de tempo esperada antes de salvar o valor.