Alguém pode sugerir uma forma de comparar os valores de duas datas maiores, menores do que, e não no passado, usando o JavaScript? Os valores serão provenientes de caixas de texto.
O objeto Date fará o que você quiser - construa um para cada data, depois compare-os utilizando o >
, <
, <=
ou >=
.
Os operadores ==
, !=
, ===
, e !==
requerem que você utilize date.getTime()
como em
var d1 = new Date();
var d2 = new Date(d1);
var same = d1.getTime() === d2.getTime();
var notSame = d1.getTime() !== d2.getTime();
para ser claro basta verificar a igualdade diretamente com os objetos da data que não funcionarão
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)
Eu sugiro que você use drop-downs ou alguma forma similar de entrada de data restrita em vez de caixas de texto, no entanto, para que você não se encontre no inferno da validação de entrada.
Em que formato?
Se você construir um Javascript Date object, você pode apenas subtraí-los para obter uma diferença de milissegundos (editar: ou apenas compará-los) :
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