2011-12-15 26 views
2

我试图在Active Directory中使用accountExpires属性获取所有已过期的帐户。Coldfusion计算帐户验证号码

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

是否有一个功能或某种我可以用来达到上述目的?

谢谢!

回答

3

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

accountExpires是表示自1月1日的100毫微秒间隔数windows file time structure,1601 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 
); 

希望有帮助。

+0

你好,感谢您的回复。我试过了```cfset dateJava = objJava.init((129407978957060010-116444736000000000)/ 10000)>`我得到错误:INIT无法找到适合的构造函数来调用,请使用javacast指定参数类型。但是当我尝试:``没问题。任何想法? ( – James 2011-12-16 05:18:37