Как преобразовать значение Integer8 в DateTime? - PullRequest
3 голосов
/ 24 августа 2011

Как преобразовать значение типа Integer8 в значение DateTime? В частности, я пытаюсь получить свойство пользователя Active Directory accountExpires в удобочитаемой форме. SearchResult.GetDirectoryEntry.Properties("accountExpires") возвращает значение "9223372036854775807."

Ответы [ 2 ]

7 голосов
/ 24 августа 2011

С http://www.dotnet247.com/247reference/msgs/19/96138.aspx

"Integer8" в AD - это объект, содержащий два 32-битных свойства, которые называются LowPart и HighPArt. Такое свойство возвращается как общий RCW (__ComObject), что вам нужно сделать, это развернуть базовый объект или просто приведите его к типу COM LargInteger. После этого вы должны объединить оба свойства в long (64 бит), если значение представляет дату Вы должны перевести формат из FileTime в DateTime.

Ниже показано, как получить свойство даты "lastLogon". !!! Установить ссылка на activeds.tlb или создание библиотеки взаимодействия с помощью tlbimp.exe !!!!

     // Use a cast ...
     li = pcoll["lastLogon"].Value as LargeInteger;
     // Or use CreateWrapperOfType
     // li = (LargeIntegerClass)Marshal.CreateWrapperOfType(pcoll["lastLogon"].Value,
 typeof(LargeIntegerClass));
     // Convert to a long
     long date = (((long)(li.HighPart) << 32) + (long) li.LowPart);
     // convert date from FileTime format to DateTime
     string dt = DateTime.FromFileTime(date).ToString();
2 голосов
/ 24 августа 2011

Использовать DateTime.FromFileTime.

http://forums.asp.net/t/999913.aspx/1?Reading+AccountExpires+Property

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...