Cómo calcular cuánto tiempo ha pasado desde una fecha en PHP

En este tutorial de PHP calcularemos cuánto tiempo ha pasado desde un fecha dada devolviendo un string. Lo que devolveremos será un string similar a “Hace 2 horas”, “Hace 3 años”. En otros tutoriales hemos visto cómo transformar fechas a texto de forma sencilla. En este tutorial lo que haremos es calcular cuánto tiempo ha pasado desde una fecha en PHP en formato texto.

Introducción de fecha en HTML

Este HTML muestra un formulario con un campo date para obtener una fecha proporcionada por el usuario.

<form name="frmTimeAgo" method="post">
Enter Date: 
<input type="date" name="date-field" value="<?php if(!empty($_POST["date-field"])) { echo $_POST["date-field"]; } ?>"/>
<input type="submit" name="submit-date" value="Enviar fecha" >
</form>
<?php
if(!empty($strTimeAgo)) {
	echo "Resultado: " . $strTimeAgo;
}
?>

Función personalizada timeago() de PHP

Este código PHP lee el valor del campo fecha de nuestro formulario. Este valor se lo pasaremos como argumento a nuestra función personalizada timeago().

En la función timeago() convertiremos la fecha dada a timestamp utilizando la función de PHP strtotime(). Y, este timestamp lo restaremos al timestamp de la fecha actual para calcular el tiempo transcurrido.

El tiempo transcurrido desde la fecha dada hasta ahora lo utilizaremos para mostrar un string en el que mostraremos cuánto tiempo ha pasado. El código sería:

<?php
	$strTimeAgo = ""; 
	if(!empty($_POST["date-field"])) {
		$strTimeAgo = timeago($_POST["date-field"]);
	}
	function timeago($date) {
	   $timestamp = strtotime($date);	
	   
	   $strTime = array("segundo", "minuto", "hora", "dia", "mes", "año");
	   $length = array("60","60","24","30","12","10");

	   $currentTime = time();
	   if($currentTime >= $timestamp) {
			$diff     = time()- $timestamp;
			for($i = 0; $diff >= $length[$i] && $i < count($length)-1; $i++) {
			$diff = $diff / $length[$i];
			}

			$diff = round($diff);
			return "Hace " . $diff . " " . $strTime[$i] . "(s)";
	   }
	}
	
?>

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP