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; } } }