using System;
namespace RocketUtils
{
public static class DateTimeExtensions
{
private static DateTime _max = FromUnixTimestamp(int.MaxValue);
public static DateTime Max
{
get { return _max; }
}
///
/// Converts a given DateTime into a Unix timestamp
///
/// Any DateTime
/// The given DateTime in Unix timestamp format
public static long ToUnixTimestamp(this DateTime value)
{
return (long)Math.Truncate((value.ToUniversalTime().Subtract(new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc))).TotalMilliseconds);
}
///
/// Gets a Unix timestamp representing the current moment
///
/// Parameter ignored
/// Now expressed as a Unix timestamp
public static long UnixTimestamp(this DateTime ignored)
{
return (long)Math.Truncate((DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalMilliseconds);
}
public static DateTime FromUnixTimestamp(int timestamp)
{
if (timestamp <= 0)
return DateTime.MinValue;
DateTime dateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
dateTime = dateTime.AddSeconds(timestamp);
return dateTime;
}
public static DateTime FromUnixTimestamp(long timestamp)
{
if (timestamp <= 0)
return DateTime.MinValue;
DateTime dateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
dateTime = dateTime.AddMilliseconds(timestamp);
return dateTime;
}
}
}