茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1671317 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
F09_305.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

爪哇咖啡屋 : [轉貼]java 如何呼叫 ldap 協議

發表者 討論內容
冷日
(冷日)
Webmaster
  • 註冊日: 2008/2/19
  • 來自:
  • 發表數: 15771
[轉貼]AD 的 pwdLastSet 微軟時間戳轉 JAVA date

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博客
前一個主題 | | | |

討論串




Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|