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

111
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 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