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
请按任意键继续. . .