Subtrair Datas em JavaScript

Subtrair Datas em JavaScript

  1. Utilize a função getTime() para subtrair a data/hora em JavaScript
  2. Use a função Math.abs() para subtrair DataTime em JavaScript
  3. 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