Maison  >  Questions et réponses  >  le corps du texte

Comparer les objets Date JavaScript

<p>Lors de la comparaison d'objets date en JavaScript, j'ai constaté qu'il ne renvoie pas vrai même lors de la comparaison de dates identiques. </p> <pre class="brush:php;toolbar:false;">var startDate1 = new Date("02/10/2012"); var startDate2 = nouvelle Date("01/10/2012"); var startDate3 = nouvelle Date("01/10/2012"); alert(startDate1>startDate2); // vrai alert(startDate2==startDate3); //false</pre> <p>Comment puis-je comparer ces dates en termes d'égalité ? Je souhaite utiliser un objet Date JavaScript natif plutôt qu'une bibliothèque tierce, car il n'est pas approprié d'utiliser une bibliothèque JavaScript tierce uniquement pour comparer des dates. </p>
P粉724737511P粉724737511444 Il y a quelques jours499

répondre à tous(2)je répondrai

  • P粉794177659

    P粉7941776592023-08-04 15:33:36

    Comparez les dates à l'aide de la méthode getTime(), qui renvoie le nombre de millisecondes depuis l'époque (c'est-à-dire un nombre) à des fins de comparaison :

    var startDate1 = new Date("02/10/2012");
    var startDate2 = new Date("01/10/2012");
    var startDate3 = new Date("01/10/2012");
    alert(startDate1.getTime() > startDate2.getTime()); // true
    alert(startDate2.getTime() == startDate3.getTime()); //true

    Envisagez également d'utiliser des nombres année/mois/jour explicites pour construire des objets Date plutôt que de vous fier à des représentations sous forme de chaîne (voir : Date.parse()). Et rappelez-vous, les dates en JavaScript sont toujours représentées en utilisant le fuseau horaire du client (navigateur).

    répondre
    0
  • P粉990568283

    P粉9905682832023-08-04 12:15:10

    En effet, dans le second cas, les objets de date réels sont comparés et les deux objets ne sont jamais égaux. Transformez-les en chiffres :

    alert( +startDate2 == +startDate3 ); // true

    Si vous souhaitez le convertir en nombre de manière plus explicite, vous pouvez utiliser l'une des méthodes suivantes :

    alert( startDate2.getTime() == startDate3.getTime() ); // true

    o ou

    alert( Number(startDate2) == Number(startDate3) ); // true

    est une référence à l'algorithme de comparaison d'égalité abstraite §11.9.3 de la spécification, en gros, il dit que lors de la comparaison d'objets, cela n'est vrai que si obj1 == obj2 fait référence au même objet, sinon le résultat est faux.

    répondre
    0
  • Annulerrépondre