Kan nogen foreslå en måde at sammenligne værdierne af to datoer større end, mindre end og ikke i fortiden ved hjælp af JavaScript? Værdierne vil komme fra tekstbokse.
Date object vil gøre det, du ønsker - konstruere en for hver dato og derefter sammenligne dem ved hjælp af >
, <
, <=
eller >=
.
Operatørerne ==
, !=
, ===
og !==
kræver, at du bruger date.getTime()
som i
var d1 = new Date();
var d2 = new Date(d1);
var same = d1.getTime() === d2.getTime();
var notSame = d1.getTime() !== d2.getTime();
for at være helt sikker på at det ikke virker at kontrollere lighed direkte med datoobjekterne
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)
Jeg foreslår dog, at du bruger drop-downs eller en lignende begrænset form for datoindtastning i stedet for tekstbokse, så du ikke havner i inputvalideringshelvede.
hvilket format?
Hvis du konstruerer en Javascript Date object, kan du bare trække dem fra hinanden for at få en millisekunders forskel (edit: eller bare sammenligne dem) :
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