代码之家  ›  专栏  ›  技术社区  ›  SherlockSpreadsheets

Active directory lastLogonTimestamp-将整数转换为日期

  •  0
  • SherlockSpreadsheets  · 技术社区  · 6 年前

    [users.lastLogonTimestamp]=131804496023891686

    [users.lastLogon]=131808141012537325

    此值存储为一个大整数,表示 自1601年1月1日(UTC)起,间隔为100纳秒。零值 表示上次登录时间未知。

    然而,我正在努力得到一个合乎逻辑的结果。我尝试将纳秒转换为天,然后将天整数添加到开始日期“1/1/1601”结果中。由于我一直在积极登录,我应该会在今天的日期“09/10/2018”左右得到一个日期结果。

    131804496023891686 / 86,400,000,000,000 
    
    = 1525.5150002765241435185185185185
    

    _

    1525 + '1/1/1601' = Wednesday, March 6, 1605  
    

    --参考文献:

    1) https://www.calculateme.com/time/nanoseconds/to-days/

    https://www.timeanddate.com/date/dateadded.html?m1=01&d1=01&y1=1601&type=add&ay=&am=&aw=&ad=1525&rec=

    3) https://docs.microsoft.com/en-us/windows/desktop/adschema/a-lastlogon

    1 回复  |  直到 6 年前
        1
  •  0
  •   SherlockSpreadsheets    6 年前

    DOH! 瞬间。。。答案就在我眼前。我错过了这个事实,这是在 100 nanoseconds 1 nanosecond .

    (131804496023891686*100) / 86,400,000,000,000 
    
    152551.50002765241435185185185185
    

    _

    152551 + '1/1/1601' = Thursday, September 13, 2018
    

    这篇文章也很有帮助-- http://www.selfadsi.org/ads-attributes/user-lastLogonTimestamp.htm

        2
  •  0
  •   Kwanian    5 年前

    所以,对于PowerShell,我把它们放在一起如下

    
    (Get-Date '1601-01-01').AddDays([long]::parse($objItem.lastlogon)*100/86400/1000/1000/1000)