Kan iemand een manier voorstellen om de waarden van twee datums groter dan, kleiner dan, en niet in het verleden te vergelijken met behulp van JavaScript? De waarden komen uit tekstvakken.
Het Date object zal doen wat je wilt - maak er een voor elke datum, vergelijk ze dan met de >
, <
, <=
of >=
.
De ==
, !=
, ==
, en !==
operatoren vereisen dat je date.getTime()
gebruikt zoals in
var d1 = new Date();
var d2 = new Date(d1);
var same = d1.getTime() === d2.getTime();
var notSame = d1.getTime() !== d2.getTime();
om duidelijk te zijn, het controleren op gelijkheid rechtstreeks met de datumobjecten zal niet werken
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)
Ik stel voor dat je drop-downs of een soortgelijke beperkte vorm van datuminvoer gebruikt in plaats van tekstvakken, zodat je niet in de hel van invoervalidatie terechtkomt.
Welk formaat?
Als je een Javascript Datum object maakt, kun je ze gewoon aftrekken om een milliseconden verschil te krijgen (edit: of ze gewoon vergelijken) :
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