时间戳是指格林威治时间自1970年1月1日(00:00:00 GMT)至当前时间的总秒数
代码:
#region 获取Unix时间戳和Unix时间戳互转
/// <summary>
/// (秒级) 时间戳Timestamp转换成日期
/// </summary>
/// <param name="timeStamp"></param>
/// <returns></returns>
private static DateTime GetDateTime(string timeStamp)
{
DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
long lTime = long.Parse(timeStamp) * 10000000;
TimeSpan toNow = new TimeSpan(lTime);
DateTime targetDt = dtStart.Add(toNow);
return targetDt;
}
/// <summary>
/// (毫秒级) 时间戳Timestamp转换成日期
/// </summary>
/// <param name="timeStamp"></param>
/// <returns></returns>
private static DateTime GetDateTime2(string timeStamp)
{
DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
long lTime = long.Parse(timeStamp) * 10000;
TimeSpan toNow = new TimeSpan(lTime);
DateTime targetDt = dtStart.Add(toNow);
return targetDt;
}
/// <summary>
/// C# 获取 13位 Unix时间戳格式 毫秒级
/// </summary>
/// <returns>long</returns>
private static long GetTimeStamp()
{
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1, 0, 0, 0, 0));
//Console.WriteLine(startTime.Ticks); //在中国时区这个等于621355968000000000
long t = (DateTime.Now.Ticks - startTime.Ticks) / 10000; //除10000调整为13位
return t;
}
/// <summary>
/// C# 获取 10位 获取Unix时间戳 秒级
/// </summary>
/// <returns></returns>
public static string GetTimeStamp2()
{
//返回 1589436601 秒级时间戳
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1, 0, 0, 0, 0));
//Console.WriteLine(startTime.Ticks); //在中国时区这个等于621355968000000000
long t = (DateTime.Now.Ticks - startTime.Ticks) / 10000000;
return t.ToString();
//这种方式得到的时间戳更长一点 获取毫秒级时间戳
//返回:158946540194438
//TimeSpan ts = DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0, 0);
//return (ts.TotalSeconds * 100000).ToString();
}
#endregion
DateTime.Now.ToUniversalTime() 和 DateTime.UtcNow都是一样的,都是获取当前计算机时间,并表现为协调通用时间(UTC),也就是0时区的时间(即格林威治时间),比我们东八区时区慢8个小时。