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

Google 自訂搜尋

Goole 廣告

隨機相片
PIMG_00044.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

對這文章發表回應

發表限制: 非會員 可以發表

發表者: 冷日 發表時間: 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博客
內容圖示
url email imgsrc image code quote
樣本
bold italic underline linethrough   












 [詳情...]
validation picture

注意事項:
預覽不需輸入認證碼,僅真正發送文章時才會檢查驗證碼。
認證碼有效期10分鐘,若輸入資料超過10分鐘,請您備份內容後,重新整理本頁並貼回您的內容,再輸入驗證碼送出。

選項

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