日期与时间戳转换扩展
2019-10-21 本文已影响0人
小船翻不翻
.net环境下转换
/// <summary>
/// 时间扩展
/// </summary>
public static class DateTimeExtension
{
/// <summary>
/// 1970.1.1 UTC时间
/// </summary>
private static DateTime Jan1st1970 = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
/// <summary>
/// 日期转换为时间戳(默认为13位毫秒时间戳)
/// </summary>
/// <param name="dateTime">日期</param>
/// <param name="isMilli">是否毫秒</param>
/// <returns></returns>
public static long ConvertToTimeStamp(this DateTime dateTime, bool isMilli = true)
{
TimeSpan timeSpan = dateTime.AddHours(-8.0) - DateTimeExtension.Jan1st1970;
return (long)(isMilli ? timeSpan.TotalMilliseconds : timeSpan.TotalSeconds);
}
/// <summary>
/// 时间戳转换为日期(时间戳单位:默认毫秒)
/// </summary>
/// <param name="timeStamp">时间戳</param>
/// <param name="isMilli">是否毫秒时间戳</param>
/// <returns></returns>
public static DateTime ConvertToDateTime(this long timeStamp, bool isMilli = true)
{
return (isMilli ? DateTimeExtension.Jan1st1970.AddMilliseconds((double)timeStamp) : DateTimeExtension.Jan1st1970.AddSeconds((double)timeStamp)).AddHours(8.0);
}
}
.net core环境下
/// <summary>
/// Datetime扩展
/// </summary>
public static class DateTimeExtension
{
/// <summary>
/// 日期转换为时间戳(默认为13位毫秒时间戳)
/// </summary>
/// <param name="dateTime">日期</param>
/// <param name="isMilli">是否毫秒</param>
/// <returns></returns>
public static long ConvertToTimeStamp(this DateTime dateTime, bool isMilli = true)
{
return isMilli ? new DateTimeOffset(dateTime).ToUnixTimeMilliseconds()
: new DateTimeOffset(dateTime).ToUnixTimeSeconds();
}
/// <summary>
/// 时间戳转换为日期(时间戳单位:默认毫秒)
/// </summary>
/// <param name="timeStamp">时间戳</param>
/// <param name="isMilli">是否毫秒时间戳</param>
/// <returns></returns>
public static DateTime ConvertToDateTime(this long timeStamp, bool isMilli = true)
{
return isMilli ? DateTimeOffset.FromUnixTimeMilliseconds(timeStamp).DateTime
: DateTimeOffset.FromUnixTimeSeconds(timeStamp).DateTime;
}
}