Интерпретировать uint64 dateData in.NET структура DateTime?
при просмотре структуры DateTime в отладчике через SOS.dll, я вижу...
0:096> !DumpVC 000007feed1ddff8 000000028036d890
Name: System.DateTime
MethodTable: 000007feed1ddff8
EEClass: 000007feecbed6b0
Size: 24(0x18) bytes
File: C:WindowsMicrosoft.NetassemblyGAC_64mscorlibv4.0_4.0.0.0__b77a5c561934e089mscorlib. dll
Fields:
MT Field Offset Type VT Attr Value Name
000007feed1e1158 40000d6 0 System.UInt64 1 instance 5246421159766325152 dateData
как можно интерпретировать "5246421159766325152" как DateTime? Есть ли способ создать DateTime из этого значения, чтобы получить читаемую человеком версию?
5 ответов
Если значение Int64 находится между DateTime.Параметр minvalue.Клещи и DateTime.Максвеллову.Клещей, то вы можете вызвать перегруженный конструктор для DateTime принимает значение типа int64.
ваше конкретное значение выходит за пределы этого диапазона. Как упоминалось в @Boo, вы можете использовать static DateTime.FromBinary метод.
здесь вы можете найти простой способ посмотреть на него WinDBG сам с помощью скрипта, затем вы можете запустить его так же просто, как:
0:000> $$>a<e:\Scripts\DumpDate.txt 0000003692816498
вырвать флаги UTC и распечатать его в удобочитаемом формате прямо из командной строки windbg (вычесть 1600 лет из результата)
!filetime 0n5246421159766325152 & 0x3fffffffffffffff
5/25/3612 09:12:13.893 (неизвестно)