Comparer les objets Date JavaScript
P粉724737511
P粉724737511 2023-08-03 17:28:16
0
2
528
<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粉724737511
P粉724737511

répondre à tous(2)
P粉794177659

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).

P粉990568283

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.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal