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.