Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/08/2013, 17:24
danneg
Invitado
 
Mensajes: n/a
Puntos:
Exclamación Obtener días de diferencia entre 2 fechas

Muy buenos días amigos foreros.

La razón que escribo aquí es por una medida desesperada (el tiempo y presión me come, si no fuese por eso, ya hubiera obtenido mi respuesta).

Estoy presentando un test, dónde una de las pruebas dice:

Cita:
Reto de programación - Programa una función que calcule los días hábiles (lunes a viernes) entre la fecha A y la fecha B *
Y bien, tengo la siguiente función

Código Javascript:
Ver original
  1. /*
  2.     @param (string) YYYY/MM/DD [fecha menor]
  3.     @param (string) YYYY/MM/DD [fecha mayor]
  4. */
  5.  
  6. function diasHabiles (d1, d2) {
  7.     d1 = new Date(d1); d2 = new Date(d2);
  8.     dif = d2.getDate() - d1.getDate();
  9.  
  10.     var weekends = 0;
  11.     for (x = 0; x < dif; x++) {
  12.         d1.setDate( d1.getDate() + 1 );
  13.         if (d1.getDay() == (6 || 0)) {
  14.             weekends++;
  15.         }
  16.     }
  17.     return (dif - weekends);
  18. }

Y funciona perfectamente entre 2 fechas que son del mismo mes. El problema está en poner 2 fechas de diferentes meses, ya que, al parecer, al restar 2 fechas, javascript sólo resta los días, es decir, si tienes una fecha del 7 de agosto y le restas el 29 de julio, te dará de diferencia 22 días (29 - 7), lo cuál obviamente no es correcto, ya que serían 9 días.

Alguien sabe a qué se debe éste comportamiento y si existe una forma de restar días entre diferentes meses? se los agradecería bastante!