Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

113
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda