2012-10-10 63 views

Respuesta

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

Usted señor ha salvado mi cordura. –

+12

¿Por qué "doble"? ¿No sería un entero largo un mejor modelo por segundos? (¿Y más en consonancia con la representación de Unix?) –

+0

@ WilliamT.Mallard Si quiere un 'long', sugiero' return span.Ticks/TimeSpan.TicksPerSecond; '. Sin embargo, desde 2015, el BCL tiene un método incorporado, '((DateTimeOffset) value) .ToUnixTimeSeconds()'. –

-1

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

+2

A) Te estás perdiendo una paren, supongo que debería ir antes de 'DateTime.UtcNow', ¿sí? ¿Y no debería 'nuevo DateTime (2012,10,10,14,0,0)' ser la época de Unix 1/1/1970? –

Cuestiones relacionadas