[javascript] Date()

Fermé
-
 gav -
Bonjour,

J'ai un problème avec la classe Date en javascript.
javascript:date = new Date(); date.setMonth(0);alert(date.getMonth());

Ce bout de code mis dans la barre d'adresse d'un navigateur m'affiche une fenetre avec un : 0.

javascript:date = new Date(); date.setMonth(1);alert(date.getMonth());

ce code lui m'affiche : 2

javascript:date = new Date(); date.setMonth(2);alert(date.getMonth());

et celui ci m'affiche : 2 egalement

Si je comprends bien l'objet date doit renvoyer le numéro du mois de l'année - 1 or j'ai l'impression que ca ne marche pas...

Est ce que j'ai fait une erreur dans ce ptit bout de code?

Merci de votre aide!
--
Kciop

3 réponses

Messages postés
34
Date d'inscription
jeudi 12 mai 2005
Statut
Membre
Dernière intervention
11 mai 2006
8
Bonsoir
Les mois sont indicés de 0 à 11 et non 1 à 12.
0 pour Janvier
...
11 pour décembre

En espérant t'aider.
Bonjour,

Je tiens tout d'abord à m'excuser car mon message n'était pas clair.
Mon code fait quelque chose d'assez stupide puisqu'il assigne un mois et tout de suite apres il l'affiche.
En gros, qu'il affiche de 0 à 11 ou de 1 à 12 n'a que peu d'importance.
setMonth assigne donc un mois (de 0 à 11) et getMonth l'affiche (de 0 à 11).

Le problème c'est qu'on lui assigne 1 et il nous affiche 2. Alors que pour 2 il nous affiche bien 2. Il en va de même pour d'autres numéros...

Je voulais savoir si c'était un bug ou si j'avais mal tapé quelque chose sur ce bout de code. Est ce que quelqu'un peu m'expliquer pourquoi Date fonctionne ainsi?

Merci
--
Kciop
Messages postés
618
Date d'inscription
vendredi 26 juillet 2002
Statut
Membre
Dernière intervention
13 juillet 2013
971
Salut!

Du code Javascript n'est pas une URL. Dès lors, si tu le tapes dans la barre d'adresse de ton navigateur, il y a beaucoup de chance que cela ne fonctionne pas.

Insère ton code dans une page HTML et tu verras qu'il fonctionne tout-à-fait correctement car là il sera interprété:


<html>
<head>
<script>
  function testDates(){
    date = new Date(); date.setMonth(0);alert(date.getMonth());
    date = new Date(); date.setMonth(1);alert(date.getMonth());
    date = new Date(); date.setMonth(2);alert(date.getMonth());
  }
</script>
</head>
<body onload="testDates();">
</body>
</html>


;-)
HackTrack
Hello!

Bon et bien merci pour les réponses mais j'ai trouvé pourquoi ca ne marchait pas.

A+
--
kciop
J'ai exactement le même souci, quelle était ta solution ?


Gav
> gavors
C'est un problème assez bête finalement :
Tu utilises ta fonction le 31 décembre donc month=11 day=31.
Si tu mets month=10 (novembre) ou n'importe quel mois qui n'a pas de 31, alors javascript fait un ptit calcul : 31 novembre ça n'existe pas donc c'est le 1er décembre.
La solution consiste à créer une date qui commence un premier janvier, par exemple tu fais new Date(0) qui équivaut au 1er janvier 1970. Ensuite tu sets ce que tu veux pour créer ton objet date.

Voilà!
Un grand merci !!
C'était on ne peut plus logique... Mais c'est vrai que sur le coup, c'est assez étonnant comme fonctionnement !

;-D