如何将 Integer8 类型值转换为 DateTime 类型值?特别是,我正在尝试获得帐户过期采用人类可读形式的 Active Directory 用户属性。SearchResult.GetDirectoryEntry.Properties("accountExpires")
返回值“9223372036854775807”。
From http://www.dotnet247.com/247reference/msgs/19/96138.aspx http://www.dotnet247.com/247reference/msgs/19/96138.aspx
AD 中的“Integer8”是一个包含两个 32 位属性的对象,称为
低部分和高部分。这样的属性作为通用 RCW 返回
(__ComObject),您需要做的是解开底层对象或
只需将其转换为 LargInteger COM 类型即可。之后你必须结合
如果值表示日期,则这两个属性都转换为长整型(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();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)