什么是時間戳:時間戳是指格林威治時間1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至現在的總秒數。
時間戳在線轉換網址:https://tool.lu/timestamp,時間戳的轉換網址有很多,經常用的還有站長工具。
下附代碼,在控制台中粘貼在啟動類即可使用,需引用(using System)命名空間 ;
/// <summary> /// 取時間戳,高並發情況下會有重復。想要解決這問題請使用sleep線程睡眠1毫秒。 /// </summary> /// <param name="AccurateToMilliseconds">精確到毫秒</param> /// <returns>返回一個長整數時間戳</returns> public static long GetTimeStamp(bool AccurateToMilliseconds = false) { if (AccurateToMilliseconds) { // 使用當前時間計時周期數(636662920472315179)減去1970年01月01日計時周期數(621355968000000000)除去(刪掉)后面4位計數(后四位計時單位小於毫秒,快到不要不要)再取整(去小數點)。 //備注:DateTime.Now.ToUniversalTime不能縮寫成DateTime.Now.Ticks,會有好幾個小時的誤差。 //621355968000000000計算方法 long ticks = (new DateTime(1970, 1, 1, 8, 0, 0)).ToUniversalTime().Ticks; return (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000; } else { //上面是精確到毫秒,需要在最后除去(10000),這里只精確到秒,只要在10000后面加三個0即可(1秒等於1000毫米)。 return (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000; } }
/// <summary> /// 時間戳反轉為時間,有很多中翻轉方法,但是,請不要使用過字符串(string)進行操作,大家都知道字符串會很慢! /// </summary> /// <param name="TimeStamp">時間戳</param> /// <param name="AccurateToMilliseconds">是否精確到毫秒</param> /// <returns>返回一個日期時間</returns> public static DateTime GetTime(long TimeStamp, bool AccurateToMilliseconds = false) { System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 當地時區 if (AccurateToMilliseconds) { return startTime.AddTicks(TimeStamp * 10000); } else { return startTime.AddTicks(TimeStamp * 10000000); } }