Attention à la gestion des dates
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:
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:
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:
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:
Fri Feb 12 2010 00:00:00 GMT+0100 {}
Qu'en pensez-vous ?