Ho bisogno di convertire un DateTime in un timestamp Unix. Così ho googled è alla ricerca di un po 'di codice di esempioPerché TimeTime su Unix time usa un double invece di un intero?
in quasi tutti i risultati che vedo, usano double
come il cambio di una tale funzione, anche se in modo esplicito utilizzando floor
per convertirlo in un numero intero. I timestamp Unix sono sempre interi. Quindi, che problema c'è con l'utilizzo di long
o int
invece del doppio?
static double ConvertToUnixTimestamp(DateTime date)
{
DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0);
TimeSpan diff = date - origin;
return Math.Floor(diff.TotalSeconds);
}
IMHO solo per non convalidare la data di inserimento. Dovrebbe restituire una struttura lunga o ad hoc – onof
Non c'è motivo, è solo codice scadente. Trasmetti a lungo, non può traboccare. –
Aggiungerò che per definizione il timepstamp Unix è UTC. Il metodo dovrebbe verificare se DateTime.Kind è UTC, Locale o Non specificato. Almeno se Local I verrebbe convertito in UTC prima di eseguire la conversione. Facoltativamente, se si desidera un timestamp Unix locale, è possibile aggiungere un sovraccarico o un parametro per non eseguire la conversione in UTC. – Nate