/ / como imprimir uma data como Eg: 2 horas atrás, mar 10 - php, formato de data

como imprimir uma data como Eg: 2 horas atrás, mar 10 - php, formato de data

  function timeSpent($date_created, $endingDay)
{
$diff = abs(strtotime($date_created) - strtotime(date("Y-m-d H:i:s")));
$years = floor($diff / (365 * 60 * 60 * 24));
$months = floor(($diff - $years * 365 * 60 * 60 * 24) / (30 * 60 * 60 * 24));
$days = floor(($diff - $years * 365 * 60 * 60 * 24 - $months * 30 * 60 * 60 * 24) / (60 * 60 * 24));
$hours = floor(($diff - $years * 365 * 60 * 60 * 24 - $months * 30 * 60 * 60 * 24 - $days * 60 * 60 * 24) / (60 * 60));
$minuts = floor(($diff - $years * 365 * 60 * 60 * 24 - $months * 30 * 60 * 60 * 24 - $days * 60 * 60 * 24 - $hours * 60 * 60) / 60);
$seconds = floor(($diff - $years * 365 * 60 * 60 * 24 - $months * 30 * 60 * 60 * 24 - $days * 60 * 60 * 24 - $hours * 60 * 60 - $minuts * 60));
$week = floor($days / 7);
$day = $days % 7;
if ($week < 1 && $week != 0) {
return $days . " days - " . $hours . " hrs - " . $minuts . "- min" . $week;
} elseif ($week == 0) {
if ($days != 0) {
return $days . "days " . $hours . "hours ago";
} elseif ($hours != 0) {
return $hours . "hours " . $minuts . "minute ago";
} elseif ($minuts) {
return $minuts . "minute " . $seconds . "seconds ago";
} else {
return "few seconds ago";
}
} else {
$stamp = strtotime($date_created);
return date("F d Y", $stamp);
}
}
}

Eu estou usando esta função não funciona corretamente.

Respostas:

0 para resposta № 1

Um erro que noto é que pode ser possível ter 1 mês e 0 semanas como se você tivesse entrado no dia 15 de abril. O que resultaria na saída apenas dos dias e horas. Altere o seguinte.

} elseif ($week == 0) {

para

} elseif ($week == 0 && $months == 0 && $years == 0) {

Isto pode estar causando o seu problema, dependendo da data que você entrou.