Compara dos fechas con JavaScript
¿Alguien puede sugerir una forma de comparar los valores de dos fechas mayores que, menores que y no en el pasado usando JavaScript? Los valores provendrán de cuadros de texto.
El objeto Fecha hará lo que usted quiera: construir uno para cada fecha y luego compararlos usando >
, <
o <=
.>=
Los operadores ==
, !=
, ===
y !==
requieren que los use date.getTime()
como en
var d1 = new Date();
var d2 = new Date(d1);
var same = d1.getTime() === d2.getTime();
var notSame = d1.getTime() !== d2.getTime();
Para ser claros, simplemente verificar la igualdad directamente con los objetos de fecha no funcionará
var d1 = new Date();
var d2 = new Date(d1);
console.log(d1 == d2); // prints false (wrong!)
console.log(d1 === d2); // prints false (wrong!)
console.log(d1 != d2); // prints true (wrong!)
console.log(d1 !== d2); // prints true (wrong!)
console.log(d1.getTime() === d2.getTime()); // prints true (correct)
Sin embargo, le sugiero que utilice menús desplegables o alguna forma restringida similar de entrada de fecha en lugar de cuadros de texto, para que no se encuentre en un infierno de validación de entradas.
Para los curiosos, date.getTime()
documentación :
Devuelve el valor numérico de la fecha especificada como el número de milisegundos desde el 1 de enero de 1970 a las 00:00:00 UTC. (Se devuelven valores negativos para momentos anteriores).
Compare <
y >
como de costumbre, pero cualquier cosa que involucre ==
o ===
debe usar un +
prefijo. Al igual que:
const x = new Date('2013-05-23');
const y = new Date('2013-05-23');
// less than, greater than is fine:
console.log('x < y', x < y); // false
console.log('x > y', x > y); // false
console.log('x <= y', x <= y); // true
console.log('x >= y', x >= y); // true
console.log('x === y', x === y); // false, oops!
// anything involving '==' or '===' should use the '+' prefix
// it will then compare the dates' millisecond values
console.log('+x === +y', +x === +y); // true