Unix時間戳,從1970-1-1 0:0:0 UTC到現在的累計時間:秒數,毫秒數
public static DateTime UnixTimeStampStart = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
DateTime的Ticks: 單位是 100 毫微秒,表示自 0001 年 1 月 1 日午夜 12:00:00 以來已經過的時間的以 100 毫微秒為間隔的間隔數。
可以通過轉換DateTime到Ticks或秒,毫秒或自定義格式來生成時間戳。
轉換DateTime為Ticks:
public static long DateTimeToTicks(DateTime time) { long value = time.ToUniversalTime().Ticks; return value; }
轉換Ticks為DateTime:
public static DateTime TicksToDateTime(long value) { DateTime time = TimeZoneInfo.ConvertTimeFromUtc(new DateTime(value), TimeZoneInfo.Local); return time; }
注意:轉換Ticks獲得的DateTime時區為UTC,需要轉換為當地時區。
DateTime轉換為秒:
public static long DateTimeToTimeStamp(DateTime dateTime) { return (long)(dateTime.ToUniversalTime() - UnixTimeStampStart).TotalSeconds; }
使用傳入的時間-之前定義的Unix時間戳開始時間,再獲取時間差的累計秒。
秒轉換為DateTime:
public static DateTime TimeStampToDateTime(long sec) { return UnixTimeStampStart.AddSeconds(sec).ToLocalTime(); }
也可使用同樣方法轉換為毫秒,由毫秒轉換回DateTime。
自定義時間戳:
我自定義了一種時間戳,使用字符串格式化表示來定義時間戳。
比如對於:年-月-日_時-分-秒 的格式化轉換定義:
public static string DTToMyTS(DateTime dt) { string ts = dt.ToString("yyyy-MM-dd_hh-mm-ss"); return ts; }