Converting Between Unix Time And DateTime
Unix time is the time value used in Unix based operating systems and is often exposed by Unix based APIs. To convert it to, or from, a .NET System.DateTime simply calculate the number of seconds since the Unix Epoch, midnight on the 1st January 1970. I’ve created a little class you can use to do just that. Note that the Unix Epoch is UTC, so you should always convert your local time to UTC before doing the calculation.
public class UnixTime
{
private static readonly DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
public static long FromDateTime(DateTime dateTime)
{
if (dateTime.Kind == DateTimeKind.Utc)
{
return (long)dateTime.Subtract(epoch).TotalSeconds;
}
throw new ArgumentException("Input DateTime must be UTC");
}
public static DateTime ToDateTime(long unixTime)
{
return epoch.AddSeconds(unixTime);
}
public static long Now
{
get
{
return FromDateTime(DateTime.UtcNow);
}
}
}
You can convert from Unix time to a UTC DateTime like this:
var calculatedCurrentTime = UnixTime.ToDateTime(currentUnixTime);
Convert to Unix time from a UTC DateTime like this:
var calculatedUnixTime = UnixTime.FromDateTime(myDateTimeValue);
And get the current time as a UTC time value like this:
Console.Out.WriteLine(UnixTime.Now);
0 comments