Это то, что я получаю, когда загружаю страницу
Код здесь:
echo "<b>Requested:</b><br>".round(abs(date("Y-m-d H:i:s") - date("Y-m-d H:i:s", strtotime($row['timestamp']))) / 60,2)." minute(s) ago<br>";
echo "<b>Current Time:</b><br>".date("Y-m-d H:i:s")."<br> ";
echo "<b>Requested Time:</b><br>".date("Y-m-d H:i:s", strtotime($row['timestamp']))."<br> ";
Моя проблема в том, что он всегда говорит, что он был запрошен 0 минут назад, изображение показывает, что это должно быть 7 минут назад и считается. я попробовал то, что код в ссылке выше показывает, я пытался возиться с ним в разных форматах, а некоторые дают мне огромные цифры, поэтому я пришел сюда за помощью
Это должно работать для вас:
<?php
//$row['timestamp'] = 1419272871; As an example
echo "<b>Requested:</b><br>".round(abs(strtotime(date("Y-m-d H:i:s")) - strtotime(date("Y-m-d H:i:s", $row['timestamp'])))/60, 2)." minute(s) ago<br>";
echo "<b>Current Time:</b><br>".date("Y-m-d H:i:s")."<br> ";
echo "<b>Requested Time:</b><br>".date("Y-m-d H:i:s", $row['timestamp'])."<br> ";
?>
Выход:
Requested:
1686.53 minute(s) ago
Current Time:
2014-12-23 23:34:23
Requested Time:
2014-12-22 19:27:51
Вы пытаетесь выполнить математику со строкой, поскольку функция date создает строку в указанном вами формате. Используйте объекты datetime для этого
$previousDate = $row['timestamp'];
$startdate = new DateTime($previousDate);
$endDate = new DateTime();
$interval = $endDate->diff($startdate);
$int = $interval->format('%i');
echo "<b>Requested:</b><br>" . $int ." minute(s) ago<br>";
Это предполагает, что $row['timestamp']
уже в формате «ГГГГ-мм-дд ЧЧ: мм: сс». Для отметки времени в стиле Unix вы хотите использовать амперсанд в своей конструкции
$previousDate = new DateTime('@' . $row['timestamp']);