什么是時間戳?
首先要清楚JavaScript與Unix的時間戳的區別:
JavaScript時間戳:是指格林威治時間1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至現在的總毫秒數。
Unix時間戳:是指格林威治時間1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至現在的總秒數。
可以看出JavaScript時間戳總毫秒數,Unix時間戳是總秒數。
比如同樣是的 2016/11/03 12:30:00 ,轉換為JavaScript時間戳為 1478147400000;轉換為Unix時間戳為 1478147400。
JavaScript時間戳相互轉換
C# DateTime轉換為JavaScript時間戳
DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1, 0, 0, 0, 0)); // 當地時區 DateTime localNow = DateTime.Now; long timeStamp = (long)((localNow - startTime).Ticks / 10000); // 相差毫秒數
或者:
DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1, 0, 0, 0, 0)); // 當地時區 DateTime localNow = DateTime.Now; long timeStamp = (long)((localNow - startTime).TotalMilliseconds); // 相差毫秒數
JavaScript時間戳轉換為C# DateTime
long jsTimeStamp = 1478169023479; System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 當地時區 DateTime dt = startTime.AddMilliseconds(jsTimeStamp); System.Console.WriteLine(dt.ToString("yyyy/MM/dd HH:mm:ss:ffff"));
獲取當前時間戳(取到毫秒得到的時間戳就是13位,只取到秒的話時間戳就是10位)
第一種方法 /// <summary> /// 獲取當前時間戳 /// </summary> /// <param name="bflag">為真時獲取10位時間戳,為假時獲取13位時間戳.bool bflag = true</param> /// <returns></returns> public static string GetTimeStamp(bool bflag) { TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0); string ret = string.Empty; if (bflag) ret = Convert.ToInt64(ts.TotalSeconds).ToString(); else ret = Convert.ToInt64(ts.TotalMilliseconds).ToString(); return ret; }
一般一個項目中就會只用一種,要么10位要么13位,所以也可以直接用下面的代碼
public static long GetTimestamp() { TimeSpan ts = DateTime.Now.ToUniversalTime() - new DateTime(1970, 1, 1);//ToUniversalTime()轉換為標准時區的時間,去掉的話直接就用北京時間 return (long)ts.TotalMilliseconds; //精確到毫秒 //return (long)ts.TotalSeconds;//獲取10位 }
下面一種方式的唯一區別就在於是否需要獲取異常,
//生成unix格式時間 public static long getUnix() { try { TimeSpan timespan = DateTime.UtcNow - new DateTime(1970, 1, 1); //return (long)timespan.TotalSeconds;//獲取10位 return (long)timespan.TotalMilliseconds; } catch (Exception) { return -1; } }
了解更多可以:https://blog.csdn.net/weixin_39885282/article/details/79462443