什么是时间戳?
首先要清楚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