由於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個小時。