我一直在做这方面的大量研究,并使用一些代码来了解如何使这项工作,但没有任何方法按照我想要的方式工作,或根本没有工作。
代码是:
<?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";
}
?>
此时我能做些什么?
答案 0 :(得分:1)
没有人指出你确实有一个错误。 “当前时间”永远不会大于“当前时间+5分钟”
如果您改为使用“-5分钟”作为“在线阈值”,那么您的第一个代码示例将正常工作。
此外,将没有日期的时间戳与strtotime()的输出进行比较,就像在第二个代码中那样,不是正确的比较。它有两个问题:
每当新的一天到来时,将重复相同的时间值。
strtotime的输出是一个整数,代表秒 - 自 - 纪元; format()的输出是当前日期内小时:分钟:秒的文本表示。
答案 1 :(得分:0)
关于如何计算2个日期/时间之间的时间的问题,请查看以下帖子的解决方案,该信息应该为您提供足够的信息! (重复?)
在这里
How to get time difference in minutes in 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";
}
?>