获取当前时间UnixTimeStamp
DateTime.UtcNow返回以UTC表示的当前时间,Kind属性是DateTimeKind.Utc
private static readonly long Jan1St1970Ms = new DateTime(1970,1,1,0,0,0,DateTimeKind.Utc).Ticks;public static long CurrentSecondUnixTimestamp(){ return (DateTime.UtcNow.Ticks - Jan1St1970Ms) / 10000000L; }
转换时间到UnixTimestamp
DateTime.ToUniversalTime. 将当前 DateTime 对象的值转换为协调世界时 (UTC)。
public static long UnixTimeStampUTC(DateTime dateTime){ Int32 unixTimeStamp; DateTime zuluTime = dateTime.ToUniversalTime(); DateTime unixEpoch = new DateTime(1970, 1, 1); unixTimeStamp = (Int32)(zuluTime.Subtract(unixEpoch)).TotalSeconds; return unixTimeStamp; }
需要注意一下的坑点
DateTime.ToUniversalTime. 将当前 DateTime 对象的值转换为协调世界时 (UTC)。
public static void Main() { DateTime x1 = new DateTime(2019, 1, 22,16,30,22); long x = (x1.ToUniversalTime().Ticks - 621355968000000000L) / 10000000L; long x2 = (x1.Ticks - 621355968000000000L) / 10000000L; Console.WriteLine("转换ToUniversalTime:" + x); Console.WriteLine("未转换ToUniversalTime:" + x2); }
如果在获取UnixTimeStamp的时候不先ToUniversalTime
,结果可能跟你预想的就不一样了。这个地方需要特别注意一下。
运行结果
作者:菜鸟飞不动
链接:https://www.jianshu.com/p/d2f48c9432e4