時間戳是指格林威治時間1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至現在的總毫秒數。
我們在計算時間戳時應為1970年01月01日到指定時間。
應當注意世界時間與本地時間的區別,不然結果可能存在偏差。
PS:以下示例代碼返回時間戳均為13位(故被轉換的時間戳同為13位,13位結果即總毫秒數不同需求請自覺轉換)。
在某些情況下會出現時間戳顯示結果與預期結果略有偏差,合理運用本地時間與世界時間的偏移量即可解決。
/// <summary> /// 獲取本地時間的世界時間戳 /// </summary> /// <returns></returns> public long GetNowTimeStamp() { var TimeStamps = (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000; return TimeStamps; } /// <summary> /// 將時間轉換為時間戳 /// </summary> /// <param name="dateTime"></param> /// <returns></returns> public long ToTimeStamp(DateTime dateTime) { var TimeStamps = (dateTime.Ticks - 621355968000000000) / 10000000; return TimeStamps; } /// <summary> /// 獲取本地時間的世界時間的偏移量 /// </summary> /// <returns></returns> public long GetUtcOffsets() { var UtcOffsets = TimeZone.CurrentTimeZone.GetUtcOffset(new DateTime()).Ticks / 10000; return UtcOffsets; } /// <summary> /// 將時間戳轉換為時間 /// </summary> /// <returns></returns> public DateTime ToDateTime(long TimeStamps) { var date = new DateTime(1970, 1, 1).AddMilliseconds(TimeStamps); //new DateTime().AddMilliseconds(621355968000000000/10000).AddMilliseconds(TimeStamps);//效果同上 return date; }