Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在Linux Box上使用PHP将Windows时间戳转换为日期大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我有一个在 Linux机器上运行的Intranet,它使用LDAP通过 php对Windows机箱上的Active Directory进行身份验证. 我可以使用LDAP从AD检索用户的条目,并从php数组访问最后一个登录日期,例如: echo $adAccount['lastlogontimestamp'][0]; // returns something like 129802528752492
@H_419_0@
我有一个Linux机器上运行的Intranet,它使用LDAP通过 PHP对Windows机箱上的Active Directory进行身份验证.

我可以使用LDAP从AD检索用户的条目,并从PHP数组访问最后一个登录日期,例如:

echo $adAccount['lastlogontimestamp'][0]; // returns something like 129802528752492619

如果这是一个Unix时间戳,我会使用以下PHP代码转换为人类可读日期:

date("d-m-Y H:i:s",$lastlogontimestamp);

但是,这不起作用.有谁知道如何实现这一点,或者确实如果可以从Linux机箱中实现这一目标?

解决方法

根据 this,您拥有的窗口时间戳自1601年1月1日起的数量为100-ns.因此,您可以使用以下公式将其转换为unix时间戳:
tUnix = tWindow/(10*1000*1000)-11644473600;

你除以10 * 1000 * 1000转换为自1601年1月1日以来的秒数,然后折扣11644473600,即1601年1月1日至1970年1月(unix时间)之间的秒数.

所以在PHP中:

date("d-m-Y H:i:s",$lastlogontimestamp/10000000-11644473600);

编辑:有趣的是,我有一个不同于巴巴的偏移.我用Java得到了我:

Calendar date1 = Calendar.geTinstance(); date1.set(1601,1,1);
Calendar date2 = Calendar.geTinstance(); date2.set(1970,1);
long dt = date2.getTimeInMillis() - date1.getTimeInMillis();
System.out.println(String.format("%f",dt / 1000.0)); // prints "11644473600.000000"

根据这个SO:Ways to Convert Unix/Linux time to Windows time我的偏移是正确的.

大佬总结

以上是大佬教程为你收集整理的在Linux Box上使用PHP将Windows时间戳转换为日期全部内容,希望文章能够帮你解决在Linux Box上使用PHP将Windows时间戳转换为日期所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。