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)"; } } ?>