namespace InnovEnergy.Lib.Utils; public static class DateTimeUtils { public static DateTime Epoch { get; } = new DateTime ( year: 1970, month: 1, day: 1, hour: 0, minute: 0, second: 0, DateTimeKind.Utc ); public static Int64 ToUnixTime(this DateTime dateTime) { var timeSinceEpoch = dateTime.ToUniversalTime() - Epoch; return timeSinceEpoch.Ticks / TimeSpan.TicksPerSecond; } public static DateTime DateTimeFromUnixTime(this IConvertible unixTime) { var epochTicks = Epoch.Ticks + unixTime.ConvertTo() * TimeSpan.TicksPerSecond; return new DateTime(epochTicks.ConvertTo(), DateTimeKind.Utc); } public static DateTime Round(this DateTime date, TimeSpan interval) { var i = interval.Ticks; var t = date.Ticks; var intervalTicks = (t + i / 2 + 1) / i * i; return new DateTime(intervalTicks, date.Kind); } }