【问题标题】:Interpret UInt64 dateData in .NET DateTime structure?在.NET DateTime 结构中解释 UInt64 dateData?
【发布时间】:2012-05-25 18:02:25
【问题描述】:

在通过 SOS.dll 查看调试器中的 DateTime 结构时,我看到...

  0:096> !DumpVC 000007feed1ddff8  000000028036d890 
  Name:        System.DateTime
  MethodTable: 000007feed1ddff8
  EEClass:     000007feecbed6b0
  Size:        24(0x18) bytes
  File:          C:\Windows\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.  dll
  Fields:
                MT    Field   Offset                 Type VT     Attr            Value Name
  000007feed1e1158  40000d6        0        System.UInt64  1 instance 5246421159766325152 dateData

如何将“5246421159766325152”解释为日期时间?有没有办法可以从这个值创建一个 DateTime 来获得人类可读的版本?

【问题讨论】:

    标签: .net datetime windbg sos


    【解决方案1】:

    !Psscor2.PrintDateTime OBJADDR 或!sosex.mdt System.DateTime DATAADDR

    【讨论】:

      【解决方案2】:
      DateTime.FromBinary(5246421159766325152)
      

      【讨论】:

      • 我经常这样做,我使用 powershell one-liner 来快速获得答案:[System.DateTime]::FromBinary(5246421159766325152)
      • 请注意,DateTime 值是 UInt64 (ulong)。 DateTime.FromBinary 采用 Int64(长)。这意味着您可以获得一个不能直接与 DateTime.FromBinary 一起使用的值。我在一个转储中看到了这个值:9859146799984130527
      【解决方案3】:

      如果 Int64 值介于 DateTime.MinValue.Ticks 和 DateTime.MaxValue.Ticks 之间,那么您可以调用采用 Int64 的 DateTime 的重载构造函数。

      但是,您的特定值不在此范围内。正如@Boo 提到的,您可以使用静态DateTime.FromBinary 方法。

      【讨论】:

        【解决方案4】:

        在这里你可以找到一个简单的方法来查看它使用 WinDBG 本身的脚本,然后你可以像这样简单地运行它:

        0:000> $$>a<e:\Scripts\DumpDate.txt 0000003692816498 
        

        http://blogs.msdn.com/b/carlosag/archive/2014/10/23/how-to-display-a-datetime-in-windbg-using-sos.aspx

        【讨论】:

          【解决方案5】:

          直接从 windbg 命令行中提取 UTC 标志并以人类可读的格式打印(从结果中减去 1600 年)

          !filetime 0n5246421159766325152 & 0x3fffffffffffffff
          

          5/25/3612 09:12:13.893(未知)

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2015-06-06
            • 2017-05-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多