Bonjour,

Je travaille à la conception d'un agenda et je voudrais vous faire partager ma découverte d'aujourd'hui. Je l'ai repérée sur IE8, FF3.5, Chrome et n'ai pas testé d'autres navigateurs.

Ouvrez une console JS et saisissez :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
var dateD=new Date();
dateD.setMonth(1);
dateD.setYear(2010);
dateD.setHours(0);
dateD.setMinutes(0)
dateD.setHours(0);
dateD.setSeconds(0);
dateD.setDate(12);
console.log(dateD);
L'effet escompté est de créer une date qui sera le 12 février 2010.
Mais le résultat obtenu est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
 Fri Mar 12 2010 00:00:00 GMT+0100 {}
Changez le paramètre de setMonth en n'importe quel autre entier entre 0 et 11 compris, la valeur obtenue correspond bien à celle attendue.

(Notez que pour la valeur 2 qui indique le mois de mars on obtient alors la même valeur que le premier test)

Retentez l'expérience avec :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
var dateD=new Date();
dateD.setMonth(1,12);
dateD.setYear(2010);
dateD.setHours(0);
dateD.setMinutes(0)
dateD.setHours(0);
dateD.setSeconds(0);
console.log(dateD);
La différence se situe dans le fait que nous déclarons le jour du mois en même temps que le mois et cela renvoie la valeur attendue :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Fri Feb 12 2010 00:00:00 GMT+0100 {}
Qu'en pensez-vous ?