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

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

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