Subtrair Datas em JavaScript
-
Utilize a função
getTime()
para subtrair a data/hora em JavaScript -
Use a função
Math.abs()
para subtrairDataTime
em JavaScript -
Utilize
Date.UTC()
Função para Converter Datas para UTC
Este artigo explica como subtrair duas datas em JavaScript.
Utilize a função getTime()
para subtrair a data/hora em JavaScript
O primeiro passo seria definir as suas duas datas utilizando a função new Date()
incorporada. Para obter a diferença entre elas em dias, subtraia as duas utilizando a função getTime()
, que as converte em valores numéricos. Pode imprimir o resultado em dias ou convertê-lo em horas, minutos, segundos, ou milissegundos, conforme necessário. Abaixo está o código de exemplo:
var day1 = new Date('08/25/2020');
var day2 = new Date('12/25/2021');
var difference = day2.getTime() - day1.getTime();
document.write(difference);
Resultado:
42080400000
Use a função Math.abs()
para subtrair DataTime
em JavaScript
Este procedimento é semelhante ao primeiro, excepto que devolve o valor absoluto. Será necessário definir as duas datas e depois subtrair as duas variáveis utilizando a função Math.abs()
como se segue:
var day1 = new Date('08/25/2020');
var day2 = new Date('08/25/2021');
var difference = Math.abs(day2 - day1);
days = difference / (1000 * 3600 * 24)
console.log(days)
Resultado:
365
Note-se que a função Math.abs()
é sensível a maiúsculas e minúsculas e não funcionará se escrita de forma diferente.
Utilize Date.UTC()
Função para Converter Datas para UTC
Quando as datas em questão abrangem uma mudança de horário de verão, as soluções acima podem revelar-se um pouco problemáticas. A melhor maneira de contornar isto seria converter as datas em UTC para se livrar primeiro da DST e depois obter a diferença entre elas. Teremos de criar uma função com dois objectos para as duas datas, ou seja
function difference(date1, date2) {
const date1utc =
Date.UTC(date1.getFullYear(), date1.getMonth(), date1.getDate());
const date2utc =
Date.UTC(date2.getFullYear(), date2.getMonth(), date2.getDate());
day = 1000 * 60 * 60 * 24;
return (date2utc - date1utc) / day
}
const date1 = new Date('2020-12-10'), date2 = new Date('2021-10-31'),
time_difference = difference(date1, date2)
console.log(time_difference)
Resultado:
325