2014-12-09 78 views
1

我试图将AD的Account Expires属性转换为日期。这是我如何尝试去做:从活动目录中获取帐户到期日期

long adDate = Long.parseLong(adDateStr); 
    long milliseconds = (adDate/10000) - DIFF_NET_JAVA_FOR_DATES; 
    Date date = new Date(milliseconds); 
    DateFormat mydate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    return(mydate.format(date)); 

问题是它是增加1天的实际账户到期日。 例如如果账户到期日期为08/01/2106,则上述代码为09/01/2016。 任何人都可以帮助我吗?

+0

你可以直接转换为新的日期()直接而不操作? – UmeshR 2014-12-09 12:23:00

+0

不需要第二行。 – sid 2014-12-09 12:38:05

+1

为什么这个问题被标记为'talend'?它根本与TOS无关;我建议编辑 – 2014-12-09 13:00:36

回答

1

只是一些猜测。

  1. 是DIFF_NET_JAVA_FOR_DATES = 11644473600000L + 24 * 60 * 60 * 1000的值?

  2. accountExpires和Date中的时间是UTC时间(非本地)。
    这是原因吗?

+0

accountExpires始终是UTC - 请参阅[MSDN](http://msdn.microsoft.com/en-us/library/ms675098%28v=vs.85%29.aspx)。可能是一些时区转移和四舍五入的奇怪。 – 2014-12-11 17:25:35