C#:IADsLargeInteger类型转换为DateTime类型

大整数属性类型

Active Directory 架构属性(例如 lastLogon)使用 LargeInteger 语法类型。有关 lastLogon 属性或 LargeInteger 语法类型的更多信息,请参见 MSDN Library(网址为 http://msdn.microsoft.com/library)中的 lastLogonLargeInteger

如果此类型的属性是通过 Properties 属性获取的,则此数据类型表示为可以被强制转换为 IADsLargeInteger 的 COM 对象。有关 IADsLargeInteger 类型的更多信息,请参见 MSDN Library(网址为 http://msdn.microsoft.com/library)中的 IADsLargeInteger

如果此类型的属性是从 ResultPropertyValueCollection 获取的,则此数据类型表示为 Int64 结构。

 

下面的示例说明如何从 IADsLargeInteger 类型转换为 DateTime 类型。

 

public static DateTime GetDateTimeFromLargeInteger(IADsLargeInteger largeIntValue)
{
    //
    // Convert large integer to int64 value
    //
    long int64Value = (long)((uint)largeIntValue.LowPart +
             (((long)largeIntValue.HighPart) << 32 )); 

    //
    // Return the DateTime in utc
    //
    return DateTime.FromFileTimeUtc(int64Value);
}

 

下面的示例说明如何从 DateTime 格式转换为 IADsLargeInteger。

 

public static IADsLargeInteger GetLargeIntegerFromDateTime(DateTime dateTimeValue)
{
    //
    // Convert DateTime value to utc file time
    //
    Int64 int64Value = dateTimeValue.ToFileTimeUtc();

    //
    // convert to large integer
    //
    IADsLargeInteger largeIntValue =
         IADsLargeInteger) new LargeInteger();
    largeIntValue.HighPart = (int) (int64Value >> 32);
    largeIntValue.LowPart = (int) (int64Value & 0xFFFFFFFF);

    return largeIntValue;
}

引文来源  大整数属性类型