Quelqu'un peut-il suggérer un moyen de comparer les valeurs de deux dates supérieures à, inférieures à, et non antérieures en utilisant JavaScript ? Les valeurs proviendront de zones de texte.
L'objet [Date] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) fera ce que vous voulez : il en construira un pour chaque date, puis les comparera en utilisant les fonctions >
, <
, <=
ou >=
.
Les opérateurs ==
, !=
, ===
, et !==
vous obligent à utiliser date.getTime()
comme dans
var d1 = new Date();
var d2 = new Date(d1);
var same = d1.getTime() === d2.getTime();
var notSame = d1.getTime() !== d2.getTime();
Pour être clair, vérifier l'égalité directement avec les objets date ne fonctionnera pas.
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)
Je vous suggère d'utiliser des listes déroulantes ou une autre forme de saisie de date limitée plutôt que des zones de texte, pour éviter de vous retrouver dans l'enfer de la validation des entrées.
quel format ?
Si vous construisez un [objet date][1] en Javascript, vous pouvez simplement les soustraire pour obtenir une différence en millisecondes (modification : ou simplement les comparer) :
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
[1] : https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Date
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