有很多关于如何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