Μπορεί κάποιος να προτείνει έναν τρόπο σύγκρισης των τιμών δύο ημερομηνιών μεγαλύτερων από, μικρότερων από και όχι στο παρελθόν χρησιμοποιώντας JavaScript; Οι τιμές θα προέρχονται από πλαίσια κειμένου.
Το Date object θα κάνει αυτό που θέλετε - θα κατασκευάσει ένα για κάθε ημερομηνία και στη συνέχεια θα τα συγκρίνει χρησιμοποιώντας τα >
, <
, <=
ή >=
.
Οι τελεστές ==
, !=
, ===
και !==
απαιτούν να χρησιμοποιήσετε την date.getTime()
όπως στο
var d1 = new Date();
var d2 = new Date(d1);
var same = d1.getTime() === d2.getTime();
var notSame = d1.getTime() !== d2.getTime();
για να είμαστε σαφείς, ο απλός έλεγχος για ισότητα απευθείας με τα αντικείμενα ημερομηνίας δεν θα λειτουργήσει.
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)
Προτείνω να χρησιμοποιήσετε drop-downs ή κάποια παρόμοια περιορισμένη μορφή εισαγωγής ημερομηνίας αντί για πλαίσια κειμένου, όμως, για να μην βρεθείτε στην κόλαση της επικύρωσης εισόδου.
ποια μορφή;
Αν κατασκευάσετε ένα Javascript Date object, μπορείτε απλά να τα αφαιρέσετε για να πάρετε μια διαφορά χιλιοστών του δευτερολέπτου (edit: ή απλά να τα συγκρίνετε) :
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