C# 时间戳的生成方式

时间戳代表的是当前时间距离格林威治时间(1970-01-01 00:00:00)的总秒数,在js中生成的时间戳是总毫秒数,如Number(new Date())

一、生成时间戳

public static string GenerateTimeStamp(bool isUnix = true)
{
if (isUnix)
return DateTimeOffset.Now.ToLocalTime().ToUnixTimeSeconds().ToString();

return DateTimeOffset.Now.ToLocalTime().ToUnixTimeMilliseconds().ToString();
}
public static string GenerateTimeStamp2(bool isUnix = true) { DateTime GL = new DateTime(1970, 1, 1, 0, 0, 0).ToLocalTime(); TimeSpan timeSpan = DateTimeOffset.Now.ToLocalTime() - GL; if (isUnix) return Convert.ToInt64(timeSpan.TotalSeconds).ToString(); return Convert.ToInt64(timeSpan.TotalMilliseconds).ToString(); } public static string GenerateTimeStamp3(bool isUnix = true) { DateTime GL = new DateTime(1970, 1, 1, 0, 0, 0).ToLocalTime(); var tickDiff = DateTimeOffset.Now.ToLocalTime().Ticks - GL.Ticks; if (isUnix) return (tickDiff / 10000000).ToString(); return (tickDiff / 100000).ToString(); }

二、时间戳转时间类型

public static DateTime ToDateTime(string timeStamp, bool isUnix = false)
{
if (long.TryParse(timeStamp, out long t))
{
if (isUnix)
return DateTimeOffset.FromUnixTimeMilliseconds(t).LocalDateTime;

return DateTimeOffset.FromUnixTimeSeconds(t).LocalDateTime;
}
throw new Exception("invalid timeStamp.");
}

public static DateTime ToDateTime2(string timeStamp, bool isUnix = false)
{
if (long.TryParse(timeStamp, out long t))
{
DateTime gl = new DateTime(1970, 1, 1, 0, 0, 0).ToLocalTime();
if (isUnix)
return gl.AddMilliseconds(t);

return gl.AddSeconds(t);
}
throw new Exception("invalid timeStamp.");
}

public static DateTime ToDateTime3(string timeStamp, bool isUnix = false)
{
if (isUnix)
timeStamp += "00000";

timeStamp += "0000000";

if (long.TryParse(timeStamp, out long t))
{
DateTime gl = new DateTime(1970, 1, 1, 0, 0, 0).ToLocalTime();
TimeSpan diff = new TimeSpan(t);
return gl.Add(diff);
}
throw new Exception("invalid timeStamp.");
}

 

posted on 2022-06-16 10:31  DreamerSix  阅读(5146)  评论(0)    收藏  举报