it-swarm.com.de

Prüfen Sie, ob das Datum in der Vergangenheit Javascript hat

Alle.... Ich verwende die jQuery-Benutzeroberfläche für die Datumsauswahl. Ich versuche mit Javascript zu überprüfen, dass das Datum, das der Benutzer eingegeben hat, in der Vergangenheit liegt. Hier ist mein Formularcode:

<input type="text" id="datepicker" name="event_date" class="datepicker">

Wie würde ich dies mit Javascript überprüfen, um sicherzustellen, dass es kein Datum in der Vergangenheit ist? Vielen Dank

47
user1048676

$('#datepicker').datepicker().change(evt => {
  var selectedDate = $('#datepicker').datepicker('getDate');
  var now = new Date();
  now.setHours(0,0,0,0);
  if (selectedDate < now) {
    console.log("Selected date is in the past");
  } else {
    console.log("Selected date is NOT in the past");
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>
<input type="text" id="datepicker" name="event_date" class="datepicker">

106
Amadan
var datep = $('#datepicker').val();

if(Date.parse(datep)-Date.parse(new Date())<0)
{
   // do something
}
7
Srinivasan S

Um die Antwort für andere Zwecke als nur für die Datumsänderung-Änderungsfunktion wiederverwendbar zu machen, können Sie einen Prototyp erstellen, der diese Aufgabe für Sie erledigt.

// safety check to see if the prototype name is already defined
Function.prototype.method = function (name, func) {
    if (!this.prototype[name]) {
        this.prototype[name] = func;
        return this;
    }
};
Date.method('inPast', function () {
    return this < new Date($.now());// the $.now() requires jQuery
});

// including this prototype as using in example
Date.method('addDays', function (days) {
    var date = new Date(this);
    date.setDate(date.getDate() + (days));    
    return date;
});

Wenn Ihnen die Sicherheitsüberprüfung nicht gefällt, können Sie auf herkömmliche Weise Prototypen definieren:

Date.prototype.inPast = function(){
    return this < new Date($.now());// the $.now() requires jQuery
}

Verwendungsbeispiel

var dt = new Date($.now());
var yesterday = dt.addDays(-1);
var tomorrow = dt.addDays(1);
console.log('Yesterday: ' + yesterday.inPast());
console.log('Tomorrow: ' + tomorrow.inPast());
0
Mike