Calcular días transcurridos entre dos fechas con php

closeHola! hace 4 years 7 months 12 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...

19 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. rache dice:

    gracias muy útil

  9. Gerardo dice:

    Me sirvió, muchas gracias

  10. 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

  11. 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

  12. Pedro dice:

    muchas gracias!

  13. 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’);

  14. franco dice:

    Me sirvio en el trabajo 4 years 2 months 11 days

  15. Ruben Vivas dice:

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

  16. 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

  17. Yoa dice:

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

  18. Uriel dice:

    Excelente aportacion, aun sirve despues de tanto tiempo.

Deja un comentario

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