Posez votre question Signaler

[javascript] Date()

kciop - Dernière réponse le 8 janv. 2009 à 10:43
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
Lire la suite 

[javascript] Date() »

7 réponses
Réponse
+0
moins plus
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.
kciop - 31 mars 2006 à 22:59
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
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
Hello!

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

A+
--
kciop
gavors - 31 déc. 2008 à 14:32
J'ai exactement le même souci, quelle était ta solution ?


Gav
kciop - 8 janv. 2009 à 03:58
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à!
gav - 8 janv. 2009 à 10:43
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
Ajouter un commentaire
Ce document intitulé « [javascript] Date() » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook