Obtener tiempo transcurrido entre dos fechas con PHP
Os dejo una función muy sencilla a la que recurrí el otro día para obtener el tiempo transcurrido entre dos fechas con el formato «X años, X meses, X días, X horas, X minutos«.
Si por ejemplo no ha transcurrido ningún año entre las fechas, en la cadena devuelta no se mostrarán los años.
function tiempoTranscurridoFechas($fechaInicio,$fechaFin)
{
$fecha1 = new DateTime($fechaInicio);
$fecha2 = new DateTime($fechaFin);
$fecha = $fecha1->diff($fecha2);
$tiempo = "";
//años
if($fecha->y > 0)
{
$tiempo .= $fecha->y;
if($fecha->y == 1)
$tiempo .= " año, ";
else
$tiempo .= " años, ";
}
//meses
if($fecha->m > 0)
{
$tiempo .= $fecha->m;
if($fecha->m == 1)
$tiempo .= " mes, ";
else
$tiempo .= " meses, ";
}
//dias
if($fecha->d > 0)
{
$tiempo .= $fecha->d;
if($fecha->d == 1)
$tiempo .= " día, ";
else
$tiempo .= " días, ";
}
//horas
if($fecha->h > 0)
{
$tiempo .= $fecha->h;
if($fecha->h == 1)
$tiempo .= " hora, ";
else
$tiempo .= " horas, ";
}
//minutos
if($fecha->i > 0)
{
$tiempo .= $fecha->i;
if($fecha->i == 1)
$tiempo .= " minuto";
else
$tiempo .= " minutos";
}
else if($fecha->i == 0) //segundos
$tiempo .= $fecha->s." segundos";
return $tiempo;
}
Para poder usar la clase «DateTime» es necesario tener como mínimo PHP 5.2.0.