欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

ad的pwdLastSet,微软时间戳转java的date 有大用

在ad里面用户的密码最后修改时间是一个long型的。用微软的话说:the number of 100 nanosecond intervals since January 1, 1601 (UTC)

也就是是从1601年1月1日到当前时间的一个100纳秒数。首先这个数去掉后四位,就变成了毫秒数。

但是因为跟java的开始计算时间不一样,所以还不能比较。

java是从1970年1月1日00:00:00开始算。而微软从1601年1月1日00:00:00开始算。

要为这两个时间点中间差多少毫秒。可需要好好算一算,是不是还得算中间有多少闰年啊。

其实不用,只要举一个例子,知道一个具体的时间,直接能算出差值的。

比如现在知道 131596092000000000 是微软时间 2018年1月5日 的15:00:00 

而在java的date里这个日期的毫秒数是:1515135600000

两个的差是 11644473600000。

再有微软的时间,先砍掉后四位,在减去 11644473600000,就可以直接转java日期了。分毫不差。

  1. Date date  = new Date(13159609200000L);
  2. Date date2  = new Date(118,0,5,15,0,0);
  3. System.out.println(date2);
  4. System.out.println(date2.getTime());
  5. System.out.println(13159609200000L - date2.getTime());
  6. System.out.println(new Date(13205468290468L - 11644473600000L));

 

文章知识点与官方知识档案匹配,可进一步学习相关知识
Java技能树首页概览87575 人正在系统学习中


来自  https://blog.csdn.net/tiantiandjava/article/details/93465798


普通分类: