web-dev-qa-db-fra.com

Vérifiez si la date est passée Javascript

Tous, J'utilise l'interface utilisateur de jQuery pour le sélecteur de date. J'essaie de vérifier avec JavaScript que la date d'entrée de l'utilisateur est passée. Voici mon code de formulaire:

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

Alors comment vérifier cela avec Javascript pour m'assurer que ce n'est pas une date dans le passé? Merci

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

Pour rendre la réponse plus réutilisable pour des choses autres que la fonction de changement de datepicker, vous pouvez créer un prototype pour gérer cela pour vous.

// 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;
});

Si vous n'aimez pas le contrôle de sécurité, vous pouvez utiliser la méthode conventionnelle pour définir des prototypes:

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

Exemple d'utilisation

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