¿Puede alguien 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 quieres - construir uno para cada fecha, y luego compararlos usando el >
, <
, <=
o >=
.
Los operadores ==
, !=
, ===
y !==
requieren el uso de 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 que quede claro, la comprobación de 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)
Te sugiero que utilices desplegables o alguna forma similar de introducción de fechas en lugar de cuadros de texto, para que no te encuentres en el infierno de la validación de entradas.
¿qué formato?
Si construyes un objeto Fecha en Javascript, puedes simplemente restarlos para obtener una diferencia de milisegundos (editar: o simplemente compararlos) :
js>t1 = new Date()
Thu Jan 29 2009 14:19:28 GMT-0500 (Eastern Standard Time)
js>t2 = new Date()
Thu Jan 29 2009 14:19:31 GMT-0500 (Eastern Standard Time)
js>t2-t1
2672
js>t3 = new Date('2009 Jan 1')
Thu Jan 01 2009 00:00:00 GMT-0500 (Eastern Standard Time)
js>t1-t3
2470768442
js>t1>t3
true
var date = new Date(); // will give you todays date.
// following calls, will let you set new dates.
setDate()
setFullYear()
setHours()
setMilliseconds()
setMinutes()
setMonth()
setSeconds()
setTime()
var yesterday = new Date();
yesterday.setDate(...date info here);
if(date>yesterday) // will compare dates