Innovenergy_trunk/csharp/Lib/Utils/DateTimeUtils.cs

38 lines
1021 B
C#
Raw Normal View History

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<Double>() * TimeSpan.TicksPerSecond;
return new DateTime(epochTicks.ConvertTo<Int64>(), 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);
}
}