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."); }
浙公网安备 33010602011771号