Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Sumar días

Estas en el tema de Sumar días en el foro de PHP en Foros del Web. Buenas, seguro que será fácil, pero no hay manera de conseguir que este bucle me funcione. Quiero que una función me devuelva el número de ...
  #1 (permalink)  
Antiguo 29/12/2017, 10:11
 
Fecha de Ingreso: enero-2002
Ubicación: Sabadell
Mensajes: 515
Antigüedad: 16 años, 3 meses
Puntos: 4
Sumar días

Buenas, seguro que será fácil, pero no hay manera de conseguir que este bucle me funcione.
Quiero que una función me devuelva el número de días que hay entre dos fechas, comprobando ciertas cosas, que no vienen al caso.

La función recibe dos parámetros:
- inicio = '15/01/2017'
- final = '20/01/2017'

Código PHP:
Ver original
  1. function numDias ($inicio, $final) {
  2.    $inicio = strtotime($inicio);
  3.    $final = strtotime($final);
  4.    $total = 0;
  5.    while ($inicio <= $final) {
  6.       $inicio = date("d/m/Y", $inicio."+1 days);
  7.      $total++;
  8.   }
  9.   return $total
  10. }

El problema está en la conversión de las fechas, que no sé cómo las debo convertir.
He escrito la función para exponer el problema, espero no haber cometido ningún error.

Gracias.
__________________
Qué fácil cuando lo sabes y qué difícil cuando no
  #2 (permalink)  
Antiguo 29/12/2017, 10:21
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.319
Antigüedad: 2 años, 10 meses
Puntos: 247
Respuesta: Sumar días

Prueba de esta manera:

Código PHP:
Ver original
  1. function numDias ($inicio, $final) {
  2.    $ini = new DateTime($inicio);
  3.    $fin = new DateTime($final);
  4.    $intervalo = $ini->diff($fin);
  5.    return $intervalo->format('%a días');
  6. }
  7.  
  8. echo numDias('2017-01-01','2017-07-11');

MUESTRA
__________________
[email protected]
HITCEL
  #3 (permalink)  
Antiguo 29/12/2017, 17:20
 
Fecha de Ingreso: enero-2002
Ubicación: Sabadell
Mensajes: 515
Antigüedad: 16 años, 3 meses
Puntos: 4
Respuesta: Sumar días

Gracias por responder.
Supongo que me he explicado mal, no busco exactamente la diferencia entre dos fechas. Busco una función que me devuelva cuantos días hay entre una fecha y otra, excluyendo fines de semana y festivos. Sería algo así:

Código PHP:
Ver original
  1. function numDias ($inicio, $final) {
  2.    $ini = strtotime($inicio);
  3.    $fin = strtotime($final);
  4.    $total = 0;
  5.    while ($ini <= $fin) {
  6.       if (laborable) {
  7.          $total++;
  8.       }
  9.       $ini = date('Y-m-d', $ini."+1 days");
  10.    }
  11.    return $total;
  12. }

Con lo que sigo teniendo el mismo error cuando intento incrementar un dia a $ini.
__________________
Qué fácil cuando lo sabes y qué difícil cuando no
  #4 (permalink)  
Antiguo 29/12/2017, 19:44
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.888
Antigüedad: 4 años, 9 meses
Puntos: 351
Respuesta: Sumar días

Conteste algo parecido en este post: http://www.forosdelweb.com/f18/calcu...5/#post4765315

Solo agrega un count y con eso obtienes el numero de días hábiles
Código PHP:
Ver original
  1. count($working_days);
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #5 (permalink)  
Antiguo 30/12/2017, 02:14
 
Fecha de Ingreso: enero-2002
Ubicación: Sabadell
Mensajes: 515
Antigüedad: 16 años, 3 meses
Puntos: 4
Respuesta: Sumar días

Gracias hhs, tu ejemplo me sirvió de mucho.
Muy agracedida
__________________
Qué fácil cuando lo sabes y qué difícil cuando no
  #6 (permalink)  
Antiguo 31/12/2017, 10:39
Avatar de alvaro_trewhela  
Fecha de Ingreso: octubre-2012
Ubicación: localhost
Mensajes: 885
Antigüedad: 5 años, 6 meses
Puntos: 103
Respuesta: Sumar días

Lo único que cambiaria es tener un recurso externo con los festivos, ya sea una bd o un archivo



La zona horaria es GMT -6. Ahora son las 08:13.