Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

107
Vistas
Calcular días libres en react native

Estoy tratando de crear un método para calcular el total de días libres.

Tengo una matriz que contiene los días hábiles:

"díaslaborables": [1,2,3,4,5],

Así que tengo dos fechas; una fecha de startDate y una fecha de endDate , y debo contar en este rango cuántos días no son días laborables (es decir, el total de días libres).

Por ejemplo, tengo un rango del 15/03 (hoy) al 21/03, un total de 7 días.

Hoy (15/03) es el día 2, y es un día laborable por lo que no tengo que incrementar un contador de días libres, mientras que por ejemplo el 19/03 no es un día laborable (es el número 6) entonces tengo para incrementar la variable de día libre.

He intentado implementar el código, pero no funciona correctamente:

 const checkDate = (start, end) => { const workingDays = [1,2,3,4,5] let dayOff = 0 var currentDate = new Date(start) while (currentDate <= end) { workingDays.map((day) => { console.log('current ', currentDate.getDay(), ' day ', day) if (currentDate.getDay() !== day) { dayOff += 1 } currentDate = currentDate.addDays(1) }) } console.log('dayOff ', dayOff) return dayOff }

me imprime:

 LOG current 2 day 1 LOG current 3 day 2 LOG current 4 day 3 LOG current 5 day 4 LOG current 6 day 5 LOG current 0 day 1 LOG current 1 day 2 LOG current 2 day 3 LOG current 3 day 4 LOG current 4 day 5 LOG dayOff 10

pero está mal porque el resultado debería ser 2.

¿Como lo puedo hacer? Gracias

EDITAR.

La función que uso para agregar un día:

 Date.prototype.addDays = function (days) { var date = new Date(this.valueOf()) date.setDate(date.getDate() + days) return date }
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

currentDate = currentDate.addDays(1)

.addDays no es una función correcta de Javascript. Se usa en C#.

A continuación se muestra el código correcto que devolverá la respuesta correcta:

 const workingDays = [1,2,3,4,5] const endDate = new Date(startDate) let dayOff = [] var currentDate = new Date(endDate) while (currentDate <= endDate) { console.log('currentDate', currentDate) let index = workingDays.indexOf(currentDate.getDay()); console.log('dayOff - index', index) if(index == -1) { console.log('dayOffDate - addded', currentDate) dayOff.push(currentDate) } currentDate = new Date(currentDate.setDate(currentDate.getDate() + 1)) }
about 4 years ago · Juan Pablo Isaza Denunciar

0

La siguiente pequeña función calculará el total de días libres entre dos (2) fechas, dada la primera fecha y la fecha de finalización.

Es simple y asume que la fecha de finalización es la misma o posterior a la fecha de inicio (no comprueba si se revierten las fechas).

 function getTotalOffDays(start,end) { const workingDays = [1,2,3,4,5]; let daysOff = 0, // days off counter date = new Date(start), // starting date endDate = new Date(end); // end date while (date <= endDate) { if (!workingDays.includes(date.getUTCDay())) daysOff += 1; // increment days off date = new Date(date.setUTCDate(date.getUTCDate() + 1)); // go the next day } return daysOff; } console.log("Total days off: " + getTotalOffDays("2022-03-15", "2022-03-21"));

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda