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

178
Vistas
Verifique el rango de fechas con una matriz

Tengo una matriz, en la que he insertado algún día que son festivos.

En mi aplicación, elijo un intervalo (startDate y endDate) y debo verificar que este intervalo no esté en mi matriz. ¿Como lo puedo hacer?

Por ejemplo:

 holidaysArray = [ "2020-04-12", "2020-04-13", "*-03-17", "*-05-01", "*-06-02" }

elijo como

 startDate: 2022-03-15T16:16:00.000Z endDate:2022-03-18T16:12:23.103Z

lo que espero

Así que ahora debería contar el día entre startDate y EndDate, y el resultado es 4 días. Pero mi matriz tiene un valor "*-03-17", por lo que no debería considerar un día.

¿Como lo puedo hacer?

Tengo un selector de fecha:

 <DatePicker modal open={showStartDate} date={startDate} title={null} confirmText="Ok" cancelText="Cancel" mode="date" onConfirm={(date) => { setShowStartDate(false) onChangeStart( date) }} onCancel={() => setShowStartDate(false)} /> <DatePicker modal open={showEndDate} date={endDate} title={null} confirmText="Ok" cancelText="Cancel" mode="date" onConfirm={(date) => { setShowEndDate(false) onChangeStart( date) }} onCancel={() => setShowEndDate(false)} />

Así que mi

 onChangeStart = (selectedDate) => { checkDate(selectedDate, endDate) } checkDate = (start, end) => { const holidayArray = travelInfo.time.holidayArray // }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Cuando itera sobre 'holidayArray', debe verificar si el feriado se encuentra entre la fecha seleccionada, si solo disminuye la diferencia total entre las fechas en '1' (suponiendo que también cuente los domingos). En el caso de que las fechas tengan * , debe encontrar los 'años' que pueden estar entre las fechas y usarlos para reemplazar el * para formar la fecha adecuada.

Primer paso (Buscar año (o años si la selección es demasiado grande, por si acaso))

(suponiendo fecha de finalización > fecha de inicio)

 const findYears = (startDate, endDate) => { let yearsArray = []; let endYear = parseInt(endDate?.split("-")[0]); let startYear= parseInt(startDate?.split("-")[0]); yearsArray.push(endYear); while(endYear !== startYear){ endYear--; yearsArray.push(endYear); } return yearsArray; }

Ahora complete su función checkDate

 checkDate = (start, end) => { const years = findYears(start, end) const holidayArray = travelInfo.time.holidayArray; var from = new Date(start); var to = new Date(end); var diff = 0; holidayArray.forEach(holiday => { if (holiday.match("\\*")) { years.forEach(year => { var check = new Date(holiday.replace("\\*", year)); if (check > from && check < to) { diff-- } }) } else { var check = new Date(holiday); if (check > from && check < to) { diff-- } } }) const diffTime = Math.abs(start - end); var diffDays = Math.round(diffTime / (1000 * 60 * 60 * 24)); return diffDays + diff }
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