比较日期时间?

时间:2013-04-01 00:23:28

标签: php datetime

我一直在做这方面的大量研究,并使用一些代码来了解如何使这项工作,但没有任何方法按照我想要的方式工作,或根本没有工作。

代码是:

<?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";
}
?>

此时我能做些什么?

2 个答案:

答案 0 :(得分:1)

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

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

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

  • 每当新的一天到来时,将重复相同的时间值。

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

答案 1 :(得分:0)

关于如何计算2个日期/时间之间的时间的问题,请查看以下帖子的解决方案,该信息应该为您提供足够的信息! (重复?)

Calculate elapsed time in php

在这里

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";
}
?>