Cuando queremos mostrar fechas con PHP, lo normal es mostrar el valor formateándolo como queramos, por ejemplo: d-m-Y H:i:s nos devolverá la fecha 14-05-2017 18:43:22.
Pero si queremos mostrar el tiempo transcurrido desde la fecha hasta el momento actual, como lo hacen las redes sociales en los timelines, podemos utilizar el siguiente método de PHP:
function getElapsedTime($datetime)
{
if( empty($datetime) )
{
return;
}
// check datetime var type
$strTime = ( is_object($datetime) ) ? $datetime->format('Y-m-d H:i:s') : $datetime;
$time = strtotime($strTime);
$time = time() - $time;
$time = ($time<1)? 1 : $time;
$tokens = array (
31536000 => 'año',
2592000 => 'mes',
604800 => 'semana',
86400 => 'día',
3600 => 'hora',
60 => 'minuto',
1 => 'segundo'
);
foreach ($tokens as $unit => $text)
{
if ($time < $unit) continue;
$numberOfUnits = floor($time / $unit);
$plural = ($unit == 2592000) ? 'es' : 's';
return $numberOfUnits . ' ' . $text . ( ($numberOfUnits > 1) ? $plural : '' );
}
}
A éste método le podemos pasar un objeto tipo Datetime o una fecha como String.
Si ejecutamos el siguiente código introduciéndole una fecha anterior a la actual como parámetro, nos devolverá algo parecido a esto:
// Ejecutamos la función ...
echo 'Publicado hace: ' . getElapsedTime('2017-05-14 19:00:00');
// Resultado => Publicado hace 1 hora.
A young developer from Madrid who loves programming and computing. Constantly testing with new technologies and thinking in new projects and challenges.
