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