Introdução
Neste laboratório, exploraremos uma função JavaScript que ajuda a calcular a data após adicionar um determinado número de dias úteis (business days). A função utiliza manipulação de arrays e iteração de datas para incrementar a data de início, levando em consideração os fins de semana. Este laboratório ajudará você a entender como manipular datas em JavaScript e aplicar lógica de negócios a cálculos de datas.
Função para Adicionar Dias Úteis a uma Data Dada
Para calcular uma data futura adicionando um determinado número de dias úteis, você pode usar a função addWeekDays. Aqui estão os passos:
- Abra o Terminal/SSH e digite
nodepara começar a praticar a codificação. - Use a função
addWeekDaysque recebe dois argumentos:startDateecount. startDateé a data a partir da qual você deseja começar a adicionar dias úteis.counté o número de dias úteis que você deseja adicionar à data de início.- A função constrói um array usando o método
Array.from()e define o comprimento igual aocountde dias úteis a serem adicionados. - O método
Array.prototype.reduce()é usado para iterar sobre o array, começando destartDatee incrementando-o usandoDate.prototype.getDate()eDate.prototype.setDate(). - A função verifica se a
dateatual é em um fim de semana ou não. - Se a
dateatual for em um fim de semana, a função a atualiza novamente adicionando um ou dois dias para torná-la um dia útil. - A função não leva em consideração feriados oficiais.
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);
Aqui estão alguns exemplos de como você pode usar a função addWeekDays:
addWeekDays(new Date("Oct 09, 2020"), 5); // 'Oct 16, 2020'
addWeekDays(new Date("Oct 12, 2020"), 5); // 'Oct 19, 2020'
Resumo
Parabéns! Você concluiu o laboratório "Adicionar Dias Úteis à Data". Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.