C# Snippets

Frammenti di timestamp Unix in C#

Esempi C# per i secondi epoch attuali, i millisecondi, la conversione con DateTimeOffset, l'output ISO 8601 e il parsing di timestamp da stringhe di 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();

Basi dei timestamp in C#

Il C# moderno dovrebbe usare DateTimeOffset per il lavoro sui timestamp Unix. DateTimeOffset.UtcNow.ToUnixTimeSeconds() restituisce i secondi Unix e ToUnixTimeMilliseconds() restituisce millisecondi compatibili con JavaScript.

Convertire i valori DateTimeOffset

Usa FromUnixTimeSeconds o FromUnixTimeMilliseconds per convertire valori epoch in DateTimeOffset. Mantieni l'archiviazione in UTC e formatta con il formato round-trip O quando ti serve una stringa ISO 8601.

Note di produzione per C#

DateTimeOffset è di solito più sicuro di DateTime per il lavoro sui timestamp perché mantiene un offset allegato al valore. Memorizza istanti UTC per confronti e persistenza, poi converti in un fuso locale solo per la visualizzazione. Fai attenzione quando le integrazioni dicono «tempo epoch» senza nominare secondi o millisecondi.

  • Usa DateTimeOffset.UtcNow.ToUnixTimeSeconds() per secondi Unix standard
  • Usa ToUnixTimeMilliseconds() per valori compatibili con JavaScript
  • Usa FromUnixTimeSeconds() quando leggi valori API documentati come secondi
  • Usa il formato O per stringhe ISO 8601 round-trip in log e JSON

FAQ

Il codice dei timestamp dovrebbe usare DateTime o DateTimeOffset?
Preferisci DateTimeOffset per il lavoro con i timestamp Unix perché preserva il contesto dell'offset. Espone anche helper diretti per secondi e millisecondi Unix.
Cosa fa il formato O?
Il formato O scrive un valore ISO 8601 round-trip. È utile per log, JSON e test in cui l'istante esatto deve sopravvivere al parsing.
Come verifico una conversione C#?
Riconverti il valore con DateTimeOffset.FromUnixTimeSeconds o FromUnixTimeMilliseconds, formattalo con O e confronta quell'output UTC con il timestamp atteso prima di salvare il valore.