internal static readonly DateTime TimestampEpoch = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
static long ToDurationSeconds(TimeSpan value, out int nanos)
nanos = (int)(((value.Ticks % TimeSpan.TicksPerSecond) * 1000000) / TimeSpan.TicksPerMillisecond);
return value.Ticks / TimeSpan.TicksPerSecond;
public static void Main()
DateTime now = new DateTime(2019, 4, 1, 13, 0, 0, 0, DateTimeKind.Local);
var seconds = ToDurationSeconds(now - TimestampEpoch, out nanos);
Console.WriteLine("{0} {1}", seconds, nanos);