2012-10-10 13 views

Antwort

36
private double ConvertToTimestamp(DateTime value) 
{ 
    //create Timespan by subtracting the value provided from 
    //the Unix Epoch 
    TimeSpan span = (value - new DateTime(1970, 1, 1, 0, 0, 0, 0).ToLocalTime()); 

    //return the total seconds (which is a UNIX timestamp) 
    return (double)span.TotalSeconds; 
} 
+0

Sie haben meine geistige Gesundheit gerettet. –

+12

Warum "doppelt"? Wäre nicht eine lange ganze Zahl für Sekunden ein besseres Modell? (Und mehr konsistent mit der Unix-Darstellung?) –

+0

@ WilliamT.Mallard Wenn Sie eine 'long 'wollen, empfehle ich' return span.Ticks/TimeSpan.TicksPerSecond; '. Seit 2015 hat die BCL jedoch eine eingebaute Methode, '((DateTimeOffset) value). ToUnixTimeSeconds()'. –

-1

DateTime.UtcNow - new DateTime(2012,10,10,14,0,0)).TotalSeconds

+2

A) Sie vermissen ein paren, ich gehe davon aus, dass es vor 'DateTime.UtcNow' gehen sollte, ja? Und sollte 'new DateTime (2012,10,10,14,0,0)' nicht die Unix-Epoche 1/1/1970 sein? –