PHP -时间戳问题[LDAP]


PHP - Timestamp Issues [LDAP]

我已经无休止地在网上搜索了,但似乎仍然无法得到我的查询的正确答案。

在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';