我正在通过LDAP(使用Spring LDAP)与AD协同工作,并且在处理Integer8/LargeInteger作为outlined here的时间戳时遇到了一个奇怪的问题。也就是说,我试图写该类型的领域都造成了...在Java中使用MS的Integer8/LargeInteger?
畸形“这里字段名称”属性值
我试图把长材和字符串在希望的根本实施将做任何需要的转换,但没有运气。这是我如何做我的数学...
/* AD Keeps track of time in 100 NS intervals (UTC) since Jan 1st 1601 */
long winEpocMS = new GregorianCalendar(1601, Calendar.JANUARY, 1).getTimeInMillis();
long nowMS = System.currentTimeMillis();
long winTime100NS = (nowMS - winEpocMS) * 10000;
是否有一个简单/优雅的方式来正确打包这些数据?是否有预编译的Java库来处理读取/写入这些相当奇怪的时间值?
加分指向任何人,可以解释为什么我们需要在100NS分辨率的64位时间戳。
在我的鳕鱼,e winEpocMS是一个常数,我只是这样写的,以便于阅读。您对64位时间戳的评论稍微有些偏差;为什么100纳秒,而不是毫秒,这是更标准?最后,你不回答核心我的问题,为什么不接受长期价值? – 2011-03-03 20:15:21
用于测量时间的100纳秒间隔是设计决定。在MS世界中似乎很平常,如在.NET中'DateTime.Ticks'以100纳秒为间隔测量时间。毫秒是Java的选择,像这样的任何决定都有优点和缺点('DateTime'是C#中的一个结构体,因此不是null,而Java中是一个类,可以为null,这在管理日期时有利有弊。为什么不接受长期价值对我来说是未知的。 – 2011-03-03 20:22:54