Coldfusion计算accountExpires

时间:2011-12-15 08:32:39

标签: datetime coldfusion active-directory

我正在尝试使用Active Directory中的accountExpires属性获取所有已过期的帐户。

由于属性类型是Int8(64位整数)而coldfusion不支持这样的长整数,所以我很难让它工作。

我可以使用某种功能或某种功能来实现上述目标吗?

谢谢!

1 个答案:

答案 0 :(得分:3)

Java中的64位整数是java.lang.Long。在ColdFusion中,Longs隐含converted to Integers

accountExpires是一个windows file time structure,表示自1601年1月1日以来100纳秒间隔的数量。This thread显示了我们如何获取Windows文件的最新时间:

long diff1601to1970 = 315532800 * 1000000000; // <-- diff in nanoseconds(1/1/1601 to 1/1/1970)
long currentFrom1970 =  System.currentTimeMillis() * 1000000;
long currentFrom1601 = diff1601to1970 + currentFrom1970;

这允许我们在ColdFusion中执行以下操作:

accountExpiresFileTime = 129407978957060010;
date = createObject("java", "java.util.Date").init(
    (accountExpiresFileTime-116444736000000000)/10000
);

希望这有帮助。