Qualcuno può suggerire un modo per confrontare i valori di due date maggiori di, minori di, e non nel passato usando JavaScript? I valori proverranno da caselle di testo.
L'oggetto Date object farà quello che vuoi - costruirne uno per ogni data, poi confrontarli usando i simboli >
, <
, <=
o >=
.
Gli operatori ==
, !=
, ===
, e !==
richiedono di usare date.getTime()
come in
var d1 = new Date();
var d2 = new Date(d1);
var same = d1.getTime() === d2.getTime();
var notSame = d1.getTime() !== d2.getTime();
per essere chiari, controllare solo l'uguaglianza direttamente con gli oggetti data non funzionerà
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)
Vi suggerisco di usare dei drop-down o qualche altra forma simile di inserimento della data piuttosto che delle caselle di testo, per non ritrovarvi nell'inferno della validazione degli input.
quale formato?
Se costruisci un oggetto Javascript Date object, puoi semplicemente sottrarli per ottenere una differenza di millisecondi (modifica: o semplicemente confrontarli):
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