首页 / C# / C# 时间戳的相关操作
C# 时间戳的相关操作
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C# 时间戳的相关操作,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3813字,纯文字阅读大概需要6分钟。
内容图文
一般的 时间戳 格式分为两种 即 10位(秒)时间戳 与 13位(毫秒)时间戳
时间戳 类型也分为两种 即 本地时间戳 与 世界统一(UTC)时间戳
废话不多说,直接上代码:
一、时间戳获取方法
/// <summary> /// 获取时间戳 /// </summary> /// <param name="timeKind"> 时间类型(只能为 Local、Utc) </param> /// <param name="format"> 时间戳格式(只能为 10、13) </param> /// <returns></returns> private double GetTimestamp(int format, DateTimeKind timeKind) { TimeSpan timeSpan = new TimeSpan(); switch (timeKind) { case DateTimeKind.Utc: timeSpan = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, timeKind); break; case DateTimeKind.Local: timeSpan = DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0, timeKind); break; default: thrownew Exception("时间类型 只能为 Local、Utc"); } switch (format) { case10: return timeSpan.TotalSeconds; case13: return timeSpan.TotalMilliseconds; default: thrownew Exception("时间戳格式 只能为 10、13"); } } ///<summary>/// 获取10位时间戳 ///</summary>///<param name="timeKind">时间类型(只能为 Local、Utc,默认 Local)</param>///<returns></returns>publicint Get10Timestamp(DateTimeKind timeKind = DateTimeKind.Local) { return Convert.ToInt32(GetTimestamp(10, timeKind)); } ///<summary>/// 获取13位时间戳 ///</summary>///<param name="timeKind">时间类型(只能为 Local、Utc,默认 Local)</param>///<returns></returns>publiclong Get13Timestamp(DateTimeKind timeKind = DateTimeKind.Local) { return Convert.ToInt64(GetTimestamp(13, timeKind)); }
二、时间戳验证方法
/// <summary> /// 验证时间戳(10位、13位皆可) /// </summary> /// <param name="timestamp"> 时间戳 </param> /// <param name="timeDiff"> 允许时差(10位时单位为 秒,13位时单位为 毫秒) </param> /// <param name="timeKind"> 时间类型(只能为 Local、Utc,默认 Local) </param> /// <returns></returns> public bool ValidateTimestamp(double timestamp, int timeDiff, DateTimeKind timeKind = DateTimeKind.Local) { TimeSpan timeSpan = new TimeSpan(); switch (timeKind) { case DateTimeKind.Utc: timeSpan = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, timeKind); break; case DateTimeKind.Local: timeSpan = DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0, timeKind); break; default: thrownew Exception("时间类型 只能为 Local、Utc"); } double nowTimestamp = 0; //现在的时间戳int format = timestamp.ToString("f0").Length; switch (format) { case10: nowTimestamp = timeSpan.TotalSeconds; break; case13: nowTimestamp = timeSpan.TotalMilliseconds; break; default: thrownew Exception("时间戳格式 错误"); } double nowTimeDiff = nowTimestamp - timestamp; //现在的时差if (-timeDiff <= nowTimeDiff && nowTimeDiff <= timeDiff) returntrue; elsereturnfalse; }
三、由 时间戳 转换为 DateTime 方法
/// <summary> /// 将时间戳装换为DateTime(10位、13位皆可) /// </summary> /// <param name="timestamp"> 时间戳 </param> /// <param name="timeKind"> 时间类型(只能为 Local、Utc,默认 Local) </param> /// <param name="toTimeKind"> 返回的时间类型(只能为 Local、Utc,默认与 timeKind 一致) </param> /// <returns></returns> public DateTime TimestampToDateTime(double timestamp, DateTimeKind timeKind = DateTimeKind.Local, DateTimeKind toTimeKind = DateTimeKind.Unspecified) { DateTime startTime; toTimeKind = timeKind; switch (timeKind) { case DateTimeKind.Utc: startTime = new DateTime(1970, 1, 1, 0, 0, 0, timeKind); break; case DateTimeKind.Local: startTime = new DateTime(1970, 1, 1, 0, 0, 0, timeKind); break; default: thrownew Exception("时间类型 只能为 Local、Utc"); } DateTime newTime; int format = timestamp.ToString("f0").Length; switch (format) { case10: newTime = startTime.AddSeconds(timestamp); break; case13: newTime = startTime.AddMilliseconds(timestamp); break; default: thrownew Exception("时间戳格式 错误"); } if (newTime.Kind != toTimeKind) newTime = toTimeKind == DateTimeKind.Local ? newTime.ToLocalTime() : newTime.ToUniversalTime(); return newTime; }
原文:https://www.cnblogs.com/sgwy/p/11609098.html
内容总结
以上是互联网集市为您收集整理的C# 时间戳的相关操作全部内容,希望文章能够帮你解决C# 时间戳的相关操作所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。