Аналогично другим, но я бы посоветовал вам использовать эпоху Unix в UTC , для здравомыслия, если ничего больше:
private static readonly DateTime UnixEpoch =
new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
...
TimeSpan timeSinceEpoch = DateTime.UtcNow - UnixEpoch;
double seconds = timeSinceEpoch.TotalSeconds;
(Обратите внимание, что я сохранил значение как double
, учитывая, что вы, очевидно, хотите его таким образом.)
В качестве альтернативы, используя Noda Time :
// clock would normally be injected, or you could use SystemClock.Instance
Instant instant = clock.Now;
Duration duration = instant - Instant.UnixEpoch;
// Noda Time exposes TotalXyz as long, not double. Go from ticks here
double seconds = ((double) duration.TotalTicks) / NodaConstants.TicksPerSecond;