Pessoal, tudo bem?
Estou tentando criar uma calculadora que some dias corridos inclusive que pule os feriados a ser definidos e continue a contagem.
Exemplo: Data inicial 1/8/2023 + 30 dias corridos incluindo o dia 14 e dia 15/8 o resultado tem que ser dia 4/9/2023.
Ocorre um erro quando clico no botão calcular.
<!DOCTYPE html>
<html>
<head>
<title>Calculadora de Dias Corridos</title>
</head>
<body>
<h1>Calculadora de Dias Corridos</h1>
<label for="data-inicial">Data Inicial:</label>
<input type="date" id="data-inicial">
<label for="quantidade-dias">Quantidade de Dias:</label>
<input type="number" id="quantidade-dias">
<button onclick="calcularDataFinal()">Calcular</button>
<h2>Resultado:</h2>
<p id="resultado"></p>
<script>
function calcularDataFinal() {
var dataInicialInput = document.getElementById('data-inicial');
var quantidadeDiasInput = document.getElementById('quantidade-dias');
var resultadoOutput = document.getElementById('resultado');
var dataInicial = new Date(dataInicialInput.value);
var quantidadeDias = parseInt(quantidadeDiasInput.value);
// Array de feriados (exemplo)
var feriados = [
new Date(2023, 0, 1), // Ano Novo
new Date(2023, 3, 21), // Feriado 1
new Date(2023, 4, 1), // Feriado 2
];
var dataFinal = calcularData(dataInicial, quantidadeDias, feriados);
resultadoOutput.textContent = 'Nova Data: ' + formatarData(dataFinal);
}
function calcularData(dataInicial, quantidadeDias, feriados) {
var dataAtual = new Date(dataInicial.getTime());
var diasCorridos = 0;
while (diasCorridos < quantidadeDias) {
dataAtual.setDate(dataAtual.getDate() + 1);
// Verificar se é um dia útil (segunda a sexta) e se não é um feriado
if (dataAtual.getDay() >= 1 && dataAtual.getDay() <= 5 && !isFeriado(dataAtual, feriados)) {
diasCorridos++;
}
}
return dataAtual;
}
function isFeriado(data, feriados) {
for (var i = 0; i < feriados.length; i++) {
var feriado = feriados[i];
if (
data.getDate() === feriado.getDate() &&
data.getMonth() === feriado.getMonth() &&
data.getFullYear() === feriado.getFullYear()
) {
return true;
}
}
return false;
}
function formatarData(data) {
var dia = String(data.getDate()).padStart(2, '0');
var mes = String(data.getMonth() + 1).padStart(2, '0');
var ano = String(data.getFullYear());
return dia + '/' + mes + '/' + ano;
}
</script>
</body>
</html>