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.
