比较 php 中的 DateTime 对象无效
Comparing objects of DateTime in php is not working
我正在制作一个 API,我需要在其中检查特定用户的令牌有效性,为此我正在使用 php 的 DateTime 函数。我在登录时保存令牌和当前时间,我希望令牌在 10 分钟内有效,因此当用户在登录后的前 10 分钟内发出请求时,我想更新令牌的时间有效性。
$currentTime = new DateTime();
$curTime = $currentTime->format("Y-m-d H:i:s");
$time10MinutesAgo = new DateTime("10 minutes ago");
$time10Minutes = $time10MinutesAgo->format("Y-m-d H:i:s");
$token_time = $query1_r['token_time']; // value is stored in the db(mysql)
if (($curTime > $token_time) && ($token_time >= $time10Minutes)){}
首先我无法通过第二个条件,但现在我的页面也无法正常工作。
使用纪元时间值进行时间比较,比较数字比比较日期要容易得多。
$currentTime = time();
$time10MinutesAgo = strtotime('-10 minutes');
$token_time = strtotime($query1_r['token_time']); // value is stored in the db(mysql)
if(($currentTime >$token_time) && ($token_time >= $time10MinutesAgo )){}
如果您已有 DateTime 对象,请不要将它们转换为字符串,只需比较对象之间的对象,如下所示:
$currentTime = new DateTime();
$time10MinutesAgo = new DateTime("10 minutes ago");
$tokenTime = new DateTime($query1_r['token_time']);
if ($time10MinutesAgo <= $tokenTime && $tokenTime <= $currentTime) {
echo "Token time is between now and now-10 minutes.";
}
我正在制作一个 API,我需要在其中检查特定用户的令牌有效性,为此我正在使用 php 的 DateTime 函数。我在登录时保存令牌和当前时间,我希望令牌在 10 分钟内有效,因此当用户在登录后的前 10 分钟内发出请求时,我想更新令牌的时间有效性。
$currentTime = new DateTime();
$curTime = $currentTime->format("Y-m-d H:i:s");
$time10MinutesAgo = new DateTime("10 minutes ago");
$time10Minutes = $time10MinutesAgo->format("Y-m-d H:i:s");
$token_time = $query1_r['token_time']; // value is stored in the db(mysql)
if (($curTime > $token_time) && ($token_time >= $time10Minutes)){}
首先我无法通过第二个条件,但现在我的页面也无法正常工作。
使用纪元时间值进行时间比较,比较数字比比较日期要容易得多。
$currentTime = time();
$time10MinutesAgo = strtotime('-10 minutes');
$token_time = strtotime($query1_r['token_time']); // value is stored in the db(mysql)
if(($currentTime >$token_time) && ($token_time >= $time10MinutesAgo )){}
如果您已有 DateTime 对象,请不要将它们转换为字符串,只需比较对象之间的对象,如下所示:
$currentTime = new DateTime();
$time10MinutesAgo = new DateTime("10 minutes ago");
$tokenTime = new DateTime($query1_r['token_time']);
if ($time10MinutesAgo <= $tokenTime && $tokenTime <= $currentTime) {
echo "Token time is between now and now-10 minutes.";
}