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