c#生成时间戳
更新时间:2022-12-25 作者:
介绍如何使用C#生成时间戳
一、什么是时间戳
时间戳的主要目的在于通过一定的技术手段,对数据产生的时间进行认证,从而验证这段数据在产生后是否经过篡改。所以时间戳服务的提供者必须证明服务中使用的时间源是可信的,所提供的时间戳服务是安全的。下面介绍最常见的几种时间戳协议,并对各个协议的原理进行分析。
时间戳,又叫 Unix Stamp. 从 1970 年 1 月 1 日(UTC/GMT 的午夜)开始所经过的秒数,不考虑闰秒。
二、C#生成时间戳
/// <summary> /// DateTime转换为10位时间戳(单位:秒) /// </summary> /// <param name="dateTime"> DateTime</param> /// <returns>10位时间戳(单位:秒)</returns> public static long DateTimeToTimeStamp(DateTime dateTime) { return (long)(dateTime.ToUniversalTime() - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalSeconds; } /// <summary> /// DateTime转换为13位时间戳(单位:毫秒) /// </summary> /// <param name="dateTime"> DateTime</param> /// <returns>13位时间戳(单位:毫秒)</returns> public static long DateTimeToLongTimeStamp(DateTime dateTime) { return (long)(dateTime.ToUniversalTime() - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds; }
输出结果
时间戳(秒):1664504170 时间戳(毫秒):1664504170403 请按任意键继续. . .
三、C#解析时间戳为DateTime
/// <summary> /// 10位时间戳(单位:秒)转换为DateTime /// </summary> /// <param name="timeStamp">10位时间戳(单位:秒)</param> /// <returns>DateTime</returns> public static DateTime TimeStampToDateTime(long timeStamp) { return new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddSeconds(timeStamp).ToLocalTime(); } /// <summary> /// 13位时间戳(单位:毫秒)转换为DateTime /// </summary> /// <param name="longTimeStamp">13位时间戳(单位:毫秒)</param> /// <returns>DateTime</returns> public static DateTime LongTimeStampToDateTime(long longTimeStamp) { return new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddMilliseconds(longTimeStamp).ToLocalTime(); }
输出结果
2022-09-30 10:16:10 2022-09-30 10:16:10.403 请按任意键继续. . .