116 votes

Comment faire une comparaison de dates en Javascript ?

Je voudrais comparer deux dates en javascript. J'ai fait quelques recherches, mais tout ce que je trouve, c'est comment retourner la date actuelle. Je veux comparer 2 dates distinctes, sans rapport avec la date du jour. Comment puis-je le faire ?

var startDate = Date(document.form1.Textbox2);

231voto

matt b Points 73770
if (date1.getTime() > date2.getTime()) {
    alert("The first date is after the second date!");
}

Référence à l'objet Date

15voto

Vladimir Shmidt Points 1149
new Date('1945/05/09').valueOf() < new Date('2011/05/09').valueOf()

9voto

Will Wagner Points 1935

Les dates de JavaScript peuvent être comparées à l'aide des mêmes opérateurs de comparaison que ceux utilisés par les autres types de données : >, <, <=, >=, ==, !=, ===, !==.

Si vous avez deux dates A et B, alors A < B si A est plus loin dans le passé que B.

Mais il semble que votre problème soit de transformer une chaîne de caractères en une date. Pour ce faire, il suffit de passer la chaîne en tant qu'argument pour une nouvelle date :

var someDate = new Date("12/03/2008");

ou, si la chaîne que vous voulez est la valeur d'un champ de formulaire, comme cela semble être le cas :

var someDate = new Date(document.form1.Textbox2.value);

Si cette chaîne n'est pas reconnue par JavaScript comme une date, vous obtiendrez toujours un objet Date, mais il sera "invalide". Toute comparaison avec une autre date renverra false. Lorsqu'il est converti en chaîne, il devient "Invalid Date". Sa fonction getTime() renverra NaN, et l'appel de isNaN() sur la date elle-même renverra true ; c'est la manière simple de vérifier si une chaîne est une date valide.

4voto

Marc Novakowski Points 22611

Vous pouvez utiliser la méthode getTime() sur un objet Date pour obtenir l'horodatage (en millisecondes) relatif au 1er janvier 1970. Si vous convertissez vos deux dates en horodatages entiers, vous pouvez ensuite comparer la différence en les soustrayant. Le résultat étant exprimé en millisecondes, il suffit de diviser par 1000 pour les secondes, puis par 60 pour les minutes, etc.

3voto

Je préférerais utiliser la méthode Date valueOf au lieu de === ou !==.

Il semble que === compare les références internes de l'objet et rien concernant la date.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X