.net core 使用TimeZoneInfo类的时间与时间戳转换
由于TimeZone类已经过时,官方推荐使用TimeZoneInfo来做时间的转换。
1、时间转换成时间戳
/// <summary> /// 将c# DateTime时间格式转换为Unix时间戳格式 /// </summary> /// <param name="time">时间</param> /// <returns>double</returns> private static double ConvertDateTimeInt(DateTime time) { DateTime dd = new DateTime(1970, 1, 1, 0, 0, 0, 0); TimeSpan ts = (time - dd); return (Int64)ts.TotalMilliseconds; }
2、时间戳转换成时间(时间戳类型为string)
/// <summary> /// 时间戳转为C#格式时间 /// </summary> /// <param name=”timeStamp”></param> /// <returns></returns> public static DateTime ConvertStringToDateTime(string timeStamp) { DateTime dtStart = TimeZoneInfo.ConvertTime(new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), TimeZoneInfo.Local); long lTime = long.Parse(timeStamp + "0000"); TimeSpan toNow = new TimeSpan(lTime); return dtStart.Add(toNow); }
注意在new DateTime时需要添加DateTimeKind.Utc,否则转出来的时间会少8个小时。