最近遇到了一個問題 時間戳 時間的轉化問題網上搜了很多沒有一個系統的介紹,特此寫此文以勉自己與后者在最短的時間內解決問題。
/// <summary> /// 時間戳 /// </summary> public class TimeHelp { #region 時間戳[10|13]轉為C#格式時間 /// <summary> /// 時間戳[10|13]轉為C#格式時間 /// </summary> public static DateTime StampToDateTime(string stamp) { if (stamp.Length != 10 || stamp.Length != 13) return DateTime.Now; try { DateTime StartDateTime = TimeZoneInfo.ConvertTime(new DateTime(1970, 1, 1), TimeZoneInfo.FindSystemTimeZoneById("China Standard Time")); if (stamp.Length == 10) StartDateTime.AddSeconds(long.Parse(stamp)); return StartDateTime.AddMilliseconds(long.Parse(stamp)); } catch (Exception) { return DateTime.Now; } } #endregion #region 獲取時間戳 /// <summary> /// 獲取時間戳 /// </summary> /// <returns></returns> public static string DateTimeToStamp(System.DateTime time, int length = 13) { long ts = ConvertDateTimeTolong(time); return ts.ToString().Substring(0, length); } #endregion #region DateTime時間格式轉換為Unix時間戳格式 /// <summary> /// DateTime時間格式轉換為Unix時間戳格式 /// </summary> private static long ConvertDateTimeTolong(DateTime datetime) { try { return datetime.Ticks - TimeZoneInfo.ConvertTime(new DateTime(1970, 1, 1), TimeZoneInfo.FindSystemTimeZoneById("China Standard Time")).Ticks; } catch (Exception) { return 0; } } #endregion }