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

109
Visualizações
Calculate days off in react native

I'm trying to create a method to calculate the total days off.

I have an array that contains the working days:

"workingDays": [1,2,3,4,5],

So I have two dates; a startDate and an endDate, and I should count in this range how many days aren't working days (i.e. total days off).

For example, I have a range from 03/15 (today) to 03/21, a total of 7 days.

Today (03/15) is day 2, and it is a working day so I don't have to increment a counter for days off, while for example 03/19 is not a working day (it is number 6) so I have to increment the day off variable.

I have tried to implement the code, but it doesn't work correctly:

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

  }

it prints me:

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

but it is wrong because the result should be 2.

How can I do? Thank you

EDIT.

The function that I use to add a day:

 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 is not a correct function of Javascript. It's used in C#.

Below is the right code which will return correct answer:

    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

The following small function will calculate the total days off between two (2) dates, given the first date and the end date.

It is simple and assumes the end date is the same or higher than the start date (does not check for reversing the dates).

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