public readonly static DateTime EPOCH_UNIX = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
private readonly static long MaxUnixSeconds = (long)(DateTime.MaxValue.ToUniversalTime() - EPOCH_UNIX).TotalSeconds;
public static void Main()
DateTime dt = FromUnixTimeStamp(3869074800);
Console.WriteLine("Date: {0:dd MMM yyyy HH:mm}", dt);
int offset = 24 - dt.Hour;
dt = dt.AddHours(offset);
Console.WriteLine("Offset from 00h00m: {0}", offset);
if (dt.Year > DateTime.UtcNow.Year)
Console.WriteLine("Fixed Date: {0:dd MMM yyyy HH:mm}", dt);
public static DateTime FromUnixTimeStamp(long value)
return value > MaxUnixSeconds ? EPOCH_UNIX.AddMilliseconds(value) : EPOCH_UNIX.AddSeconds(value);