using System; namespace MAX.Core.Helpers; public class DateHelper { /// /// Unix纪元时间 /// private static readonly DateTime UnixEpoch = new(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); /// /// 将时间转换为秒级时间戳 /// /// /// public static long GetUnixTimestampInSeconds(DateTime dateTime) { TimeSpan timeSpan = dateTime.ToUniversalTime() - UnixEpoch; return (long)timeSpan.TotalSeconds; } /// /// 将时间转换为毫秒级时间戳 /// /// /// public static long GetUnixTimestampInMilliseconds(DateTime dateTime) { TimeSpan timeSpan = dateTime.ToUniversalTime() - UnixEpoch; return (long)timeSpan.TotalMilliseconds; } /// /// 将时间转换为微秒时间戳 /// /// /// public static long GetUnixTimestampInMicroseconds(DateTime dateTime) { long us = dateTime.ToUniversalTime().Ticks - UnixEpoch.Ticks; return us; } /// /// 将时间Ticks转换为毫微秒时间戳 /// /// /// public static long GetUnixTimestampInMicroseconds(long ticks) { long us = ticks - UnixEpoch.Ticks; return us; } /// /// 将秒级时间戳转换为时间 /// /// /// public static DateTime ConvertFromUnixTimestampInSeconds(long timestamp) { return UnixEpoch.AddSeconds(timestamp).ToLocalTime(); } /// /// 将毫秒级时间戳转换为时间 /// /// /// public static DateTime ConvertFromUnixTimestampInMilliseconds(long timestamp) { return UnixEpoch.AddMilliseconds(timestamp).ToLocalTime(); } /// /// 将微秒级时间戳转换为时间 /// /// /// public static DateTime ConvertFromUnixTimestampInMicroseconds(long timestamp) { long us = timestamp + UnixEpoch.Ticks; return new DateTime(us); } /// /// 获取当前时间的秒级时间戳 /// /// public static long GetCurrentUnixTimestampInSeconds() { return GetUnixTimestampInSeconds(DateTime.UtcNow); } /// /// 获取当前时间的毫秒级时间戳 /// /// public static long GetCurrentUnixTimestampInMilliseconds() { return GetUnixTimestampInMilliseconds(DateTime.UtcNow); } /// /// 获取当前时间的微秒级时间戳 /// /// public static long GetCurrentUnixTimestampInMicroseconds() { return GetUnixTimestampInMicroseconds(DateTime.UtcNow); } }