Получите время прошло всегда 0

Это то, что я получаю, когда загружаю страницу

введите описание изображения здесь

Код здесь:

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 минут назад и считается. я попробовал то, что код в ссылке выше показывает, я пытался возиться с ним в разных форматах, а некоторые дают мне огромные цифры, поэтому я пришел сюда за помощью

0

Решение

Это должно работать для вас:

<?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
1

Другие решения

Вы пытаетесь выполнить математику со строкой, поскольку функция 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']);
1

По вопросам рекламы [email protected]