Calcular días transcurridos entre dos fechas con php

closeHola! hace 4 years 5 months 7 days que escribí esta entrada, puede que esta información ya no sea valida en la actualidad, por favor se comprensivo conmigo cuando comentes 🙂

Veamos como podemos calcular los días transcurridos entre dos fechas con php usando la función strtotime:

function dias_transcurridos($fecha_i,$fecha_f)
{
	$dias	= (strtotime($fecha_i)-strtotime($fecha_f))/86400;
	$dias 	= abs($dias); $dias = floor($dias);		
	return $dias;
}
// Ejemplo de uso:
echo dias_transcurridos('2012-07-01','2012-07-18');
// Salida : 17

Como podemos ver el código es muy sencillo e intuitivo, recibe 2 fechas una Iniciar y otra Final, con las cuales calcula los días transcurridos.
Para saber que formatos de fecha soporta y conocer mas sobre strtotime puedes ver la documentación oficial de PHP de esta función Aqui!

You may also like...

17 Responses

  1. omega dice:

    muchas gracias me sirvio de mucho. Saludos.

  2. Andres dice:

    Gracias, tambie me sirvio de ayuda

  3. geranjian dice:

    por que lo divides entre 86400

  4. Fernando dice:

    lo divide entre 86400 porque son los segundos que tiene un día, la función strtotime convierte la fecha dada a segundos

  5. Obed Alvarado dice:

    Muy sencillo pero muy util el ejemplo 🙂

  6. Hugo dice:

    Muy buen aporte, muchas gracias!!

  7. Lala dice:

    Hola, después de 3 años, 1 mes y 10 días me sirvió muchísimo tu código.
    Gracias 😉

  8. Gerardo dice:

    Me sirvió, muchas gracias

  9. Eduardo Moraga T. dice:

    //Observación:
    echo dias_transcurridos(‘2016-09-02’, ‘2016-09-05’);
    //entrega como resultado: 2 lo que no es correcto, pues hay 3 días de diferencia

  10. Eduardo Moraga T. dice:

    Reemplazando la sentencia
    $dias = floor($dias);

    por
    $dias = round($dias, 0);

    se soluciona. Para el caso de excepción en que el periodo contempla la fecha 2016-09-05
    Se agradece confirmar que no existan otros casos de excepción.

    Saludos

  11. Pedro dice:

    muchas gracias!

  12. Eduardo M dice:

    Muy bueno pero mejor utilizar dateTime se podrían realizar mas operaciones de forma sencilla

    $datetime1 = new DateTime(‘2016-10-11’);
    $datetime2 = new DateTime(‘2016-10-13’);
    $interval = $datetime1->diff($datetime2);
    echo $interval->format(‘%R%a días’);

  13. franco dice:

    Me sirvio en el trabajo 4 years 2 months 11 days

  14. Ruben Vivas dice:

    en un arreglo de 950000 registros, se cuelga !!!! sirve para ejemplos pequeños…

  15. martin dice:

    Saludos tengo un ejercicio que hacer y quisiera saber si me pueden ayudar debo hacer un formulario ya que los datos se deben guardar en mysql, y el formulario en php el ejercicio dice:

    Realice un calculo en php teniendo que
    1 fecha de registro
    1 fecha de inicio
    el ejercicio consiste en que coloques la fecha de registro posterior a la actual
    y te calcule si desde la fecha de registro a la fecha de inicio han transcurrido 5 o mas años
    le sume 3 dias a los 30 o 31 dias del mes indicado.
    ejemplo
    se coloca como fecha de registro 12/01/2000
    como fecha de inicio 12/01/2006
    el resultado debería ser 15/02/2006 para un total de 34 dias
    aclaratoria debe calcular solo 1 mes y sumar los 3 dias cada 5 años y mostrar el resultado.

    quien me puede ayudar con este ejercicio soy estudiante y no tengo muy claro todavía como desarrollarlo

  16. Yoa dice:

    ¿Como resolvieron el problema de los países donde hay cambio de hora? En ese caso 86400 da algunos problemas

Deja un comentario

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