美文网首页.NET菜鸟学编程Asp.net开发
C#转换Datetime为 UnixTimeStamp方法和坑点

C#转换Datetime为 UnixTimeStamp方法和坑点

作者: 菜鸟飞不动 | 来源:发表于2019-01-22 17:57 被阅读1次

    获取当前时间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,结果可能跟你预想的就不一样了。这个地方需要特别注意一下。

    运行结果

    相关文章

      网友评论

        本文标题:C#转换Datetime为 UnixTimeStamp方法和坑点

        本文链接:https://www.haomeiwen.com/subject/fwjrjqtx.html