在Linux Box上使用PHP将Windows时间戳转换为日期
发布时间:2020-05-27 17:40:52 所属栏目:Linux 来源:互联网
导读:我有一个在 Linux机器上运行的Intranet,它使用LDAP通过 PHP对Windows机箱上的Active Directory进行身份验证. 我可以使用LDAP从AD检索用户的条目,并从php数组访问最后一个登录日期,例如: echo $adAccount[lastlogontimestamp][0]; // returns something like
|
我有一个在 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 – PYTHONPATH环境变量……之后如何创建每个子目录?
- 在Linux中禁用vsyscalls
- Linux下Makefile的automake生成全攻略--转
- linux – 使用或命令在两个目录中找到unix文件的顺序
- 是否可以使用Linux命令从HTTP服务器读取前N个字节?
- linux – 如何使用hexdump显示前x个字节?
- Another app is currently holding the yum lock
- linux – Shell重定向和文件I / O持续时间
- active-directory – Samba可以支持完整的Windows-ACL吗?
- Linux管理员必须知道什么?
