web-dev-qa-db-fra.com

Déterminer l'égalité des dates en Javascript

J'ai besoin de savoir si deux dates sélectionnées par l'utilisateur sont les mêmes en Javascript. Les dates sont passées à cette fonction dans une chaîne ("xx/xx/xxxx"). C'est toute la granularité dont j'ai besoin.

Voici mon code:

        var valid = true;
    var d1 = new Date($('#datein').val());
    var d2 = new Date($('#dateout').val());
    alert(d1+"\n"+d2);
    if(d1 > d2) {
        alert("Your check out date must be after your check in date.");
        valid = false;
    } else if(d1 == d2) {
        alert("You cannot check out on the same day you check in.");
        valid = false;
    }

L'alerte javascript après la conversion des dates en objets ressemble à ceci:

Mar 25 janvier 2011 00:00:00 GMT-0800 (heure normale du Pacifique)

Mar 25 janvier 2011 00:00:00 GMT-0800 (heure normale du Pacifique)

Le test pour déterminer si la date 1 est supérieure à la date 2 fonctionne. Mais l'utilisation des opérateurs == ou === ne change pas valide en faux.

60
Jarred

Utilisez la méthode getTime(). Il vérifiera la valeur numérique de la date et fonctionnera à la fois pour les contrôles supérieur/inférieur à ainsi que pour les contrôles égaux.

ÉDITER:

if (d1.getTime() === d2.getTime())
121
spinon

Si vous ne voulez pas appeler getTime() essayez simplement ceci:

(a >= b && a <= b)

15
devmiles.com
var d1 = new Date($('#datein').val());
var d2 = new Date($('#dateout').val());

utiliser deux méthodes simples pour vérifier l'égalité

  1. if( d1.toString() === d2.toString())
  2. if( +d1 === +d2)
2
Arjun Kubendran