有很多關於如何LDAP->的Unix轉換的例子,但我不能對上帝的愛將其轉換回在Unix的> LDAP ..Unix時間戳到LDAP時間戳
這裏就是我得趕緊爲LDAP-> Unix的:
How to convert LDAP timestamp to Unix timestamp
http://www.morecavalier.com/index.php?whom=Apps%2FLDAP+timestamp+converter
function LDAPtoUnix($t) {
$secsAfterADepoch = $t/(100000000);
$AD2Unix = ((1970-1601) * 365 -3 + round((1970-1601)/4)) * 86400;
return intval($secsAfterADepoch-$AD2Unix);
}
,我認爲應該是準確的。 但我扭曲我小小的腦袋扭轉數學,我不知道它.. 我的頭沸騰,只是計算不同時期之間的差異秒和簡單地加/減他們到給定的時間參數?
有人可以談談如何扭轉時間戳嗎?
參考:http://msdn.microsoft.com/en-us/library/windows/desktop/ms679430(v=vs.85).aspx
而且爲什麼我要問,除了我的大腦不想計算,數學的主要原因是,PHP的浮點機制似乎是不那麼具體,因爲它需要是什麼? 如果我計算Unix-> LDAP時間戳,我會以1.3009518089E+17
結束,我不確定Active Directory是否喜歡這個特定的notaion,所以我需要將它存儲在一個字符串中,但我不知道如何計算這些大數字,而不是結束雙。
目前,我已經有了:
printf("%.0f", UnixToLDAP(time()));
這給了我正確的長度,但它不是真正具體。
我需要什麼
簡短,適合在pwdLastSet
在Active Directory Unix的> LDAP時間戳。 此外,它必須儘可能完美,檢查時,我的嘗試並沒有好下場:http://www.morecavalier.com/index.php?whom=Apps%2FLDAP+timestamp+converter
谷歌:自動解決方案(2012的Windows活動目錄)
你可以簡單的狀態-1的pwdLastSet和Windows會在密碼更改後自動將時間設置爲上次登錄的時間。這不是完美的,但它適用於任何使用谷歌搜索和結束在這裏。
葉普,我的語法在這一點上是相當不合適的。 我一直懶惰,只是寫在網上發現,因爲開發筆記本電腦是從世界隔離(沒有互聯網,USB等),我有另一臺谷歌結果的計算機,所以我打字「側身」只需複製粘貼整個shabang並稍後修復它就更容易了:) thx通知tho :)您的解決方案有效! – Torxed
嗯,我把所有這些「盲目」都編碼在一個可以測試它的環境中,整理只是讓我可以看到數學如何工作。奇怪的是,根據您所鏈接的JS解決方案,我似乎得到了太多的零,但我看不出爲什麼。 – IMSoP
奇怪的是,您的解決方案修復了neet的PHP浮點問題! :) – Torxed