Introducción
En este laboratorio, exploraremos una función de JavaScript que ayuda a calcular la fecha después de sumar un número dado de días hábiles. La función utiliza la manipulación de arrays y la iteración de fechas para incrementar la fecha de inicio, teniendo en cuenta los fines de semana. Este laboratorio te ayudará a entender cómo manipular fechas en JavaScript y aplicar lógica de negocios a cálculos de fechas.
Función para agregar días hábiles a una fecha dada
Para calcular una fecha futura sumando un número dado de días hábiles, puedes utilizar la función addWeekDays. Aquí están los pasos:
- Abra la Terminal/SSH y escriba
nodepara comenzar a practicar la codificación. - Utilice la función
addWeekDaysque toma dos argumentos:startDateycount. startDatees la fecha a partir de la cual desea comenzar a agregar días hábiles.countes el número de días hábiles que desea agregar a la fecha de inicio.- La función construye un array utilizando el método
Array.from()y establece la longitud igual alcountde días hábiles a agregar. - El método
Array.prototype.reduce()se utiliza para iterar sobre el array, comenzando desdestartDate, e incrementarlo utilizandoDate.prototype.getDate()yDate.prototype.setDate(). - La función verifica si la
dateactual es un fin de semana o no. - Si la
dateactual es un fin de semana, la función la actualiza nuevamente sumando uno o dos días para que sea un día hábil. - La función no tiene en cuenta los días feriados oficiales.
const addWeekDays = (startDate, count) =>
Array.from({ length: count }).reduce((date) => {
date = new Date(date.setDate(date.getDate() + 1));
if (date.getDay() % 6 === 0)
date = new Date(date.setDate(date.getDate() + (date.getDay() / 6 + 1)));
return date;
}, startDate);
Aquí hay algunos ejemplos de cómo puedes utilizar la función addWeekDays:
addWeekDays(new Date("Oct 09, 2020"), 5); // 'Oct 16, 2020'
addWeekDays(new Date("Oct 12, 2020"), 5); // 'Oct 19, 2020'
Resumen
¡Felicitaciones! Has completado el laboratorio de Agregar Días Hábiles a una Fecha. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.