时间戳是指格林威治时间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; }