PHP - 时间戳问题[LDAP]

时间:2015-09-16 12:00:59

标签: php datetime 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);

我得到以下输出:

  

周六,2009年5月16日05:09:39 +0200

因此,非常感谢任何有关这些时间戳的正确格式化等方面的帮助。

由于

1 个答案:

答案 0 :(得分:2)

这应该做你需要的。在$ ldap

中添加1天到提供日期
$ldap = '20150915110643.0Z';
$convert = DateTime::createFromFormat( 'Ymdhis.0Z', $ldap );
$convert->add( new DateInterval( 'P1D' ) );
$ldap = $convert->format( 'Ymdhis' ).'.0Z';