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.

  • carlos ledesma

    FechaInicio la saco desde mi bd en el momento que se registro el usuario tengo una funcion para que me acomode la fecha a (dd/mm/aaaa) $fechaFin se supone que es la fecha actual, como hago para hacer que me la cuente!

    • Alberto

      El formato de las fechas deben ser el siguiente:

      Año-Mes-Dia

      Por ejemplo: 2014-09-10

      Con los guiones incluidos.

  • Fidel Jesus Ibáñez Carmona

    la fecha actual la sacas la obtienes en el orden que deseas con : Date(“Y-n-j”) ; lo de guiones o / va a depender de la configuracion de tu server, yo por ejemplo uso date(“Y/n/j”); para obtener la decha en formato : 2014/12/03. Espero aberles ayudado en algo

  • Yo Albert

    Gracias, justamente lo que buscaba!

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies.     ACEPTAR