C# Snippets

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.

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

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.