Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

250
Views
¿Cómo puedo hacer que mi campo de fecha API sea de 3 días hábiles a partir de la fecha de hoy teniendo en cuenta los fines de semana (sábados y domingos) usando JS?

Estoy usando javascript para comunicarme con la API de la plataforma. ¡Solo tenga una pregunta rápida!

Hay un selector de fecha en el que puede hacer clic y elegir cualquier fecha. Mi tarea aquí es crear un código JS que pueda comunicarse con la variable Fecha y no le permita seleccionar una fecha de más de 3 días hábiles, por ejemplo: hoy es 22/04 y el máximo que se puede seleccionar es 25/04. Ya he creado este código que puedes ver a continuación.

Mi pregunta es ¿cómo puedo tener en cuenta los fines de semana en este código? Por ejemplo, si los sábados y los domingos caen dentro, no se contarán. ¡Solo se contarán los días hábiles!

¡Cualquier ayuda será muy apreciada!

Fragmento de código:

 const DateVar = "DATE"; /* name of the date variable in Checkbox to apply validation to */ events[`change:${DateVar}`] = async () => { const days = 3; /* how many days from today the user is able to select dates*/ const today = new Date(); let validationPeriodStart = new Date(today.setDate(today.getDate() + days)); /* VALIDATION FUNCTION */ const result = form.ShowCustomValidation(DateVar, [(value) => { /* transform the selected date into JS Date object */ const selectedDate = new Date(value); /* validate if the selected date is before the period where user can select dates (today + 3 weeks and onward) */ const RESULT = value && selectedDate < validationPeriodStart ? `Error: Please make sure your date is after the ${validationPeriodStart.toLocaleDateString('en-SG')}` : undefined; return RESULT; } ]); /* throw a pop-up error in the top right corner - remove if not required */ if (result) { form.SetError(result) }; }; addEvents(events);```
about 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Una solución completa tendría en cuenta los días festivos de fechas fijas y variables y, por lo tanto, dependería en gran medida de datos de geolocalización precisos. Una solución menos exigente recolectaría bases de datos de días festivos para lugares relevantes compilando estructuras de datos de calendario local que incluyan una bandera de días festivos.

Para el paso básico de excluir los sábados y domingos, utilice el método Date.getDay() .

El siguiente código de ejemplo (reemplace su línea de código let validationPeriodStart = new Date(today.setDate(today.getDate() + days));`` with it) define una fecha actual y la avanza en pasos de 1 día, cada turno de prueba para sábado/domingo, hasta agotar el horizonte de fecha y hora. Los cálculos se realizan en el dominio de la época definida por milisegundos desde el 01/01/1970.

 let d_current = new Date() , n_horizonDistance = days , validationPeriodStart ; while (n_horizonDistance > 0) { let n_dow = d_current.getDay() ; if ((n_dow !== 0) && (n_dow !== 6)) { n_horizonDistance--; } d_current = new Date(d_current.getTime() + 1000 * 3600 * 24); // + 1 day }

El método tiene en cuenta los desbordamientos de meses y años (incluidos los años bisiestos), pero no el horario de verano. Se puede ampliar fácilmente, p. comprobación de vacaciones. Consulte MDN Docs para obtener más información sobre el objeto JS Date y sus características.

Se logra una mayor flexibilidad y un código más limpio al precalcular las fechas de corte durante un cierto período de tiempo y almacenar los datos en la base de datos del lado del servidor.

about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!