對這文章發表回應
發表限制: 非會員 可以發表
發表者: 冷日 發表時間: 2022/5/26 1:33:59
ad的pwdLastSet,微軟時間戳轉java的date
版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
在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日期了。分毫不差。
Date date = new Date(13159609200000L);
Date date2 = new Date(118,0,5,15,0,0);
System.out.println(date2);
System.out.println(date2.getTime());
System.out.println(13159609200000L - date2.getTime());
System.out.println(new Date(13205468290468L - 11644473600000L));
原文出處:ad的pwdLastSet,微软时间戳转java的date_天天的博客-CSDN博客