我已经无休止地在网上搜索了,但似乎仍然无法得到我的查询的正确答案。
在PHP中,我正在提取用户的whenCreated ldap属性,它以以下格式出现:
echo $user["whenCreated"]
//20150915110643.0Z
此用户创建于2015年9月15日11:06:43
然后我想添加1天,并将其插入到accountExpires属性。
我遇到的问题是转换时间戳,执行1天的添加,然后转换回来。
这个网站:http://www.epochconverter.com/epoch/ldap-timestamp.php似乎有一个计算器(不幸的是,它没有显示所使用的函数)
但是,它说格式是YMD LDAP TIMESTAMP
所以YYYYMMDDHHMMSST. T
我知道使用UNIX时间戳很容易添加1天。因此,当我使用以下代码将StackOverflow上的答案转换为UNIX时间戳时:
$winSecs = (int)($user["whenCreated"] / 10000000); // divide by 10 000 000 to get seconds
$unixTimestamp = ($winSecs - 11644473600); // 1.1.1600 -> 1.1.1970 difference in seconds
echo date(DateTime::RFC822, $unixTimestamp);
得到以下输出:
5月16日星期六05:09:39 +0200
因此,对于这些时间戳的正确格式等任何帮助都将非常感激。
谢谢
这应该可以满足您的需要。在$ldap
中提供的日期增加1天$ldap = '20150915110643.0Z';
$convert = DateTime::createFromFormat( 'Ymdhis.0Z', $ldap );
$convert->add( new DateInterval( 'P1D' ) );
$ldap = $convert->format( 'Ymdhis' ).'.0Z';