Calcular tiempo entre dos fechas con PHP

Hace poco traía un artículo con unas funciones de PHP bastante útiles, entre las que se encontraban algunas relacionadas con fechas. Hoy traigo una función muy utilizada en el trabajo de fechas, mostrar cuánto tiempo ha pasado entre dos fechas utilizando una función en PHP.

Con esta función sencilla, podremos ver cuánto tiempo ha pasado entre una fecha y otra, podremos expresar el resultado en el formato horas:minutos:segundos.

La función recoge las dos fechas, las convierte a formato de fechas y las resta. Como el resultado lo expresa en segundos, sólo habrá que convertir los segundos al formato de horas:minutos:segundos. La función es la siguiente:

function calcula_tiempo($start_time, $end_time) { 
    $total_seconds = strtotime($end_time) - strtotime($start_time); 
    $horas              = floor ( $total_seconds / 3600 );
    $minutes            = ( ( $total_seconds / 60 ) % 60 );
    $seconds            = ( $total_seconds % 60 );
     
    $time['horas']      = str_pad( $horas, 2, "0", STR_PAD_LEFT );
    $time['minutes']    = str_pad( $minutes, 2, "0", STR_PAD_LEFT );
    $time['seconds']    = str_pad( $seconds, 2, "0", STR_PAD_LEFT );
     
    $time               = implode( ':', $time );
     
    return $time;
}

Como se puede ver, con pocas líneas de código tendremos el problema de saber cuánto tiempo en horas, minutos y segundos ha pasado entre dos fechas, es una función que utilizo frecuentemente.

¿Te ha gustado? Compártelo y Comenta! Puedes darme tu opinión o consultar tus dudas, de esta forma mantendremos la blogosfera viva.

    3 Commentsto Calcular tiempo entre dos fechas con PHP

    1. Roberto dice:

      Hola Muchas gracias por el código me sirvio mucho
      pero la verdad es que no le entiendo mucho, se que funciona, intente en vez que fuera resta que fuera una suma pero no me resulto la parte de horas, me da una cantidad muy grande, minutos y segundo todo bien.
      Espero no te quite mucho tiempo el que me puedas orientar para convertirlo en suma.
      De ante mano muchas GRACIAS.

      • Hola Roberto,

        Supongo que lo que quieres hacer es por ejemplo sumar 34:12:22 (horas:minutos:segundos) con otro valor similar. Te recomendaría que dividas las horas por una parte, los minutos por otra y los segundos en una tercera parte.

        Suma los segundos, después los minutos y después las horas y juntalo todo.

        Es muy posible que te encuentres con valores como 40s+50s que daría 90s (01:30 minutos).

        Te lo explico en pseudocódigo mejor:

        horas = extrae horas de tiempo (xN)
        minutos = extrae minutos de tiempo (xN)
        segundos = extrae segundos de tiempo (xN)
        suma segundos1 con segundos 2
        si resultado_segundos > 60{
        resultado_segundos = resultado_segundos – 60
        minutos+1
        }

        Haz lo mismo con minutos sumándole 1 porque en segundos hemos pasado de 60

        Un saludo y gracias por visitar mi blog

    2. Cristian dice:

      hola buenos dias yo quisiera apollo por favor si me ayuda pagan 400 cada mes y tengo así 2017/01/01 y 2017/10/02 un mes y 10 dias que diga an pasado un mes dies dias cuando pase 10 días que se aplique y equivalente 5% y si fuese 2017/01/01 y 2017/10/03 que ya me aplique el 5% atrasado que sería 420 mas el otro 5% del nuevo mes ayuda estoy en php

    Deja un comentario

    Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *


    *

    © 2017 Soy Autodidacta | Design Theme by: D5 Creation | Powered by: WordPress