public static long ToEpoch(this DateTime time, TimePrecision precision)
{
TimeSpan t = time - Origin;
switch (precision)
{
case TimePrecision.Hours: return (long)t.TotalHours;
case TimePrecision.Minutes: return (long)t.TotalMinutes;
case TimePrecision.Seconds: return (long)t.TotalSeconds;
case TimePrecision.Milliseconds: return (long)t.TotalMilliseconds;
case TimePrecision.Microseconds: return (long)t.Ticks / (TimeSpan.TicksPerMillisecond * 1000);
case TimePrecision.Nanoseconds: return (long)t.Ticks * 100; //1 tick = 100 nano sec
}
return 0;
}
}