Manipulando Datas em JavaScript: Subtraindo e Calculando Diferenças
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!
Marcele Eller Gusmão Moura @marceleellerMuito 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!