No internet connection
  1. Home
  2. JavaScript

Manipulando Datas em JavaScript: Subtraindo e Calculando Diferenças

Por Daniel Carvalho @DanielCarvalho
    2023-12-12 13:34:57.606Z

    Olá pessoal! Recentemente, enfrentei um pouco de dificuldade ao lidar com as diferenças entre datas no desafio do Gerenciador de Tarefas. Diante disso, decidi criar este post com o intuito de auxiliar aqueles que enfrentaram as mesmas dificuldades.

    • Vou criar duas variáveis e definir uma data nelas:
    <script>
          let data1 = new Date("2023-01-01");
    
          let data2 = new Date("2023-12-31");
    </script>
    
    • Ao subtrair as duas datas, a saída será de 2689200000 milissegundos:
    <script>
      let diferenca = data2 - data1;
      console.log(diferenca);
    </script>
    
    • Isso ocorre porque a data em JavaScript é representada como o número de milissegundos desde o início de 01 de janeiro de 1970, horário universal coordenado (UTC).

    • Ou seja, para obter a diferença em segundos, é necessário dividir por 1000, pois há 1000 milissegundos em um segundo:

    <script>
       let diferencaSegundos = (data2 - data1) / 1000;
       console.log(diferencaSegundos);
       saída = 2689200
    </script>
    
    • Para calcular a diferença em minutos, a divisão por (1000 * 60) converte a diferença de milissegundos para minutos:
    <script>
       let diferencaMinutos = (data2 - data1) / (1000 * 60) 
       // 1000 milissegundos * 60 segundos;
       console.log(diferencaMinutos);
       saída = 44820
    </script>
    
    • Para horas, a divisão por (1000 * 60 * 60) converte a diferença de milissegundos para horas:
    <script>
       let diferencaHoras = (data2 - data1) / (1000 * 60 * 60);
        // 1000 milissegundos * 60 segundos * 60 minutos
       console.log(diferencaHoras);
       saída = 747
    </script>
    
    • Por fim, a diferença entre os dias das datas é obtida pela divisão (1000 * 60 * 60 * 24), que converte a diferença de milissegundos para dias:.
    <script>
          let diferencaDia = (data2 - data1) / (1000 * 60 * 60 * 24);
    
          // 1000 milissegundos * 60 segundos * 60 minutos * 24 horas
          console.log(diferencaDia);
    
          saída = 31.125 
         //ou let diferencaDia = Math.floor((data2 - data1) / (1000 * 60 * 60 * 24))
         //saída = 31
    </script>
    

    Espero que essas explicações e códigos ajudem vocês a lidar com diferenças entre datas de forma mais eficiente!

    • 1 respostas
    1. Muito legal Daniel! Pode ser muito útil futuramente.
      No desafio eu não usei essas transformações, só fiz comparações em relação a qual data era mais recente do que a outra, mas que bom que você conseguiu resolver seu problema dessa maneira!