Blog Reacción Estudio

¡Tu zona de aprendizaje!

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.