Como comparar duas datas em JavaScript
- JavaScript Comparar Duas Datas com Operadores de Comparação
-
JavaScript Comparar duas datas com o método
getTime()
-
JavaScript Comparar duas datas com o método
valueOf()
-
JavaScript Comparar duas datas com a função
Number()
-
JavaScript Compara Duas Datas com o Operador Unário Plus
+
O JavaScript tem o sistema de comparação de datas incorporado, o que torna tão fácil fazer a comparação.
Este tutorial introduz métodos diferentes de como comparar duas datas em JavaScript. Cada método terá um exemplo de códigos, que você pode executar em sua própria máquina.
JavaScript Comparar Duas Datas com Operadores de Comparação
Podemos comparar diretamente duas datas em JavaScript com operadores de comparação como <
, <=
, >
e >=
.
var date1 = new Date('2020-10-23');
var date2 = new Date('2020-10-22');
console.log(date1 > date2);
console.log(date1 >= date2);
console.log(date1 < date2);
console.log(date1 <= date2);
Resultado:
true
true
false
false
Date
diretamente em JavaScript. Porque dois objetos diferentes em JavaScript nunca são iguais tanto em nível estrito quanto abstrato. Veja o exemplo abaixo.let date1 = new Date();
let date2 = new Date(date1);
console.log(date1 == date2);
console.log(date1 === date2);
console.log(date1 != date2);
console.log(date1 !== date2);
Resultado:
false
false
true
true
Podemos verificar a igualdade de duas datas com o seguinte método.
JavaScript Comparar duas datas com o método getTime()
Convertemos duas datas em valores numéricos correspondentes ao seu tempo, utilizando o método getTime()
, e então podemos comparar duas delas diretamente.
let date1 = new Date(2019, 08, 07, 11, 45, 55);
let date2 = new Date(2019, 08, 03, 11, 45, 55);
if (date1.getTime() < date2.getTime())
document.write('date1 is lesser than date2');
else if (date1.getTime() > date2.getTime())
document.write('date1 is greater than date2');
else
document.write('both are equal');
Resultado:
date1 is lesser than date2
O método getTime()
poderia verificar a igualdade de duas datas em JavaScript.
let date1 = new Date();
let date2 = new Date(date1);
if (date1.getTime() == date2.getTime()) document.write('Two dates are equal.');
if (date1.getTime() === date2.getTime()) document.write('Two dates are equal.');
Resultado:
Two dates are equal.Two dates are equal.
JavaScript Comparar duas datas com o método valueOf()
O método valorOf()
do objeto Date
funciona de forma semelhante ao método getTime()
do tempo. Ele converte o objeto Date
em valor numérico.
let date1 = new Date(2019, 08, 07, 11, 45, 55);
let date2 = new Date(2019, 08, 07, 11, 45, 55);
if (date1.valueOf() < date2.valueOf())
document.write('date1 is lesser than date2');
else if (date1.valueOf() > date2.valueOf())
document.write('date1 is greater than date2');
else if (date1.valueOf() === date2.valueOf())
document.write('both are equal');
console.log(date1.valueOf() === date2.valueOf())
Tanto o getTime()
como o valueOf()
retornam o número de milissegundos desde 1 de janeiro de 1970, 00:00 UTC.
JavaScript Comparar duas datas com a função Number()
A função Number()
converte o objeto Date
para um número que representa o valor do objeto em Java. Ela retorna NaN se o objeto não puder ser convertido para um número legal.
let date1 = new Date(2019, 08, 07, 11, 45, 55);
let date2 = new Date(2019, 08, 07, 11, 45, 55);
console.log(Number(date1) === Number(date2))
console.log(Number(date1) == Number(date2))
console.log(Number(date1) < Number(date2))
console.log(Number(date1) > Number(date2))
JavaScript Compara Duas Datas com o Operador Unário Plus +
Um operador unário pega um único argumento e opera com base neste argumento ou operando. O JavaScript tem muitos operadores unários. Aqui utilizamos o operador unário mais +
, que tenta converter o argumento em um número.
let date1 = new Date(2019, 08, 07, 11, 45, 55);
let date2 = new Date(2019, 08, 07, 11, 45, 55);
console.log(+date1 === +date2)
console.log(+date1 == +date2)
console.log(+date1 < +date2)
console.log(+date1 > +date2)
Tanto a função Number
quanto o operador unário +
chamam os métodos valorOf()
dos bastidores.