Cómo comparar dos fechas en JavaScript

Kirill Ibrahim 12 octubre 2023
  1. Comparar dos fechas en JavaScript con operadores de comparación
  2. JavaScript compara dos fechas con el método getTime()
  3. JavaScript compara dos fechas con el método valueOf()
  4. JavaScript compara dos fechas con la función Number()
  5. JavaScript compara dos fechas con el operador unitario plus +
Cómo comparar dos fechas en JavaScript

JavaScript tiene incorporado el sistema de comparación de fechas, lo que facilita la comparación.

Este tutorial introduce diferentes métodos de cómo comparar dos fechas en JavaScript. Cada método tendrá un ejemplo de códigos, que puedes ejecutar en tu propia máquina.

Comparar dos fechas en JavaScript con operadores de comparación

Podemos comparar directamente dos fechas en JavaScript con operadores de comparación como <, <=, > y >=.

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
Warning
No podemos usar los operadores de igualdad para comparar los objetos Date directamente en JavaScript. Porque dos objetos diferentes en JavaScript nunca son iguales tanto en el nivel estricto como en el abstracto. Ver el ejemplo a continuación.
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 comprobar la igualdad de dos fechas con el siguiente método.

JavaScript compara dos fechas con el método getTime()

Convertimos dos fechas en valores numéricos correspondientes a su tiempo usando el método getTime(), y luego podemos comparar dos de ellas directamente.

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

El método getTime() podría comprobar la igualdad de dos fechas en 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 compara dos fechas con el método valueOf()

El método valueOf() del objeto Date funciona de manera similar al método getTime(). Convierte el objeto Date en un 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 getTime() como valueOf() devuelven el número de milisegundos desde el 1 de enero de 1970, 00:00 UTC.

JavaScript compara dos fechas con la función Number()

La función Number() convierte el objeto Date en un número que representa el valor del objeto en Java. Devuelve NaN si el objeto no puede ser convertido en un 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 dos fechas con el operador unitario plus +

Un operador unario toma un solo argumento y opera sobre este argumento u operando. JavaScript tiene muchos operadores unarios. Aquí usamos el operador unario más +, que intenta convertir el argumento en un 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 la función Number como el operador unario + llaman a los métodos valueOf() entre bastidores.

Artículo relacionado - JavaScript DateTime