2013-04-01 4 views
0

Я занимаюсь с этим большим количеством исследований и использовал несколько кодов, чтобы узнать, как это сделать, но ничто не работало так, как я этого хотел, или не работал вообще.Сравнение DateTime?

Код:

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

Предполагается сравнить две переменные, и выяснить, если последний активный переменной больше или меньше, чем за 5 минут, и если оно больше, появляются в автономном режиме. Я не знаю, что не так, как обновления NOW() на каждой странице и останавливается, если пользователь не вошел в систему. Любые предложения или помощь? Благодарю.

Переменная, исходящая из выделенного массива, получает ['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

Отредактированный мой комментарий, посмотрите на примерный пример кода ... надеюсь, что это сработает для вас. – Grmn

ответ

0

Что касается вашего вопроса, как рассчитать время между двумя датами/временем, просмотрите решение на следующих должностях, которое должно предоставить вам достаточно информации! (Дубликат?)

Calculate elapsed time in php

А вот

How to get time difference in minutes in PHP

EDIT AS ПОЖАЛУЙСТА

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

Никто не указал, что у вас действительно есть ошибка. «Текущее время» никогда не будет больше «текущего времени +5 минут»

Ваш первый пример кода будет работать правильно, если вы вместо этого используете «-5 минут» в качестве «онлайн-порога».

Кроме того, сравнение временной метки без даты с выходом strtotime(), как и во втором коде, не является правильным сравнением. У этого есть две проблемы:

  • Каждый раз, когда наступает новый день, будет повторяться одно и то же значение времени.

  • Выходной сигнал strtotime представляет собой целое число, представляющее секунды-с-эпоху; вывод format() представляет собой текстовое представление часов: минут: секунд в течение текущей даты.