0

我一直在对此进行大量研究,并使用了一些代码来了解如何使这项工作发挥作用,但没有任何事情能按我想要的方式工作,或者根本没有工作。

代码是:

<?php
$time1 = $user['last_active'];
$time2 = "+5 minutes";
   if (strtotime($time1) > strtotime($time2)) {
      echo "Online!";
   }else{
      echo "Offline!";  
   }
?>

应该比较两个变量,看看最后一个活动变量是大于还是小于5分钟,如果大于,就出现离线。我不知道NOW()每个页面上的更新有什么问题,如果用户未登录,我会停止更新。有什么建议或帮助吗?谢谢。

$time1变量来自一个获取的数组,该数组获取['last_active']在每个页面上更新的信息。

我修复了我的代码,但它仍然无法正常工作,但是,我认为我已经设法比以前更进一步了..

<?php
$first  = new DateTime();
$second = new DateTime($user['last_active']);
$diff = $first->diff( $second );
$diff->format( '%H:%I:%S' );
if($diff->format( '%H:%I:%S' ) > (strtotime("5 minutes"))){
echo "Offline";
}else{
echo "Online";
}
?>

此时我能做什么?

4

2 回答 2

1

没有人指出你实际上有一个错误。“当前时间”永远不会大于“当前时间+5分钟”

如果您改为使用“-5 分钟”作为“在线阈值”,您的第一个代码示例将正常工作。

此外,将没有日期的时间戳与 strtotime() 的输出进行比较,就像您在第二个代码中所做的那样,这不是正确的比较。它有两个问题:

  • 每次新的一天到来时,都会重复相同的时间值。

  • strtotime 的输出是一个整数,代表 seconds-since-epoch;format() 的输出是当前日期内小时:分钟:秒的文本表示。

于 2013-05-09T18:43:09.103 回答
0

至于您的问题如何计算两个日期/时间之间的时间,请在以下帖子中查看解决方案,这应该会给您足够的信息!(复制 ? )

在php中计算经过的时间

和这里

如何在PHP中以分钟为单位获取时差

随意编辑

<?
$first = new DateTime(); // this would hold your [last active]
//$first->modify("-6 minutes");
$second = new DateTime("NOW");
$difference = $second->diff( $first ); // second diff first
if ($difference->format('%i') > 5) { // comparing minutes only in example ( %i )
 echo "The user is AFK";
} else {
 echo "user might still be active";
}
?>
于 2013-04-01T00:29:38.307 回答