Ir ao conteúdo

Posts recomendados

Postado

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>

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!