Bonjour
J'ai créé un petit script suite à un bug apparu sur un calendrier Javascript ( Dynamic Date Selector ) que j'utilise depuis plus d'un an. ( aujourd'hui 31 octobre 2008, j'ai utilisé mon calendrier et celui m'a annoncé que le 1er novembre serait un lundi...)
Voici le petit script que j'ai créé pour débugger et comprendre :
<html>
<head>
<body>
<script type="text/javascript">
var tabNomJour = ["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"];
var jour = 1; // Jour 1 du mois
var mois = 9; // Mois de septembre
var annee = 2008; // Année 2008
var moisJavascript = mois-1; // Mois de septembre (puisque les mois javascript vont de 0 à 11)
/**************************************************************************************/
/* Première méthode qui fonctionne tout les jours sauf le 31 */
/**************************************************************************************/
// Création d'un objet date (sans paramètre)
var objetPremier = new Date();
// Détermination du mois de l'objet date
objetPremier.setMonth(moisJavascript);
// Détermination de l'année de l'objet date
objetPremier.setFullYear(annee);
// Détermination du jour de l'objet date avec le 1 du mois
objetPremier.setDate(jour);
// Obtention du numéro du jour de la semaine du 01 septembre 2008
numJourSemainePremier = objetPremier.getDay();
// Affichage du numéro du jour de la semaine du 01 septembre 2008
alert("Le "+jour + "/" + mois + "/" + annee + " est un " + tabNomJour[numJourSemainePremier])+" ("+numJourSemainePremier+")";
/**************************************************************************************/
/* Seconde méthode qui fonctionne tout les jours */
/**************************************************************************************/
// Création d'un objet date au 1 septembre 2008
var objetSecond = new Date(annee,moisJavascript,jour);
// Obtention du numéro du jour de la semaine du 01 septembre 2008
numJourSemainePremier = objetSecond.getDay();
// Affichage du numéro du jour de la semaine du 01 septembre 2008
alert("Le "+jour + "/" + mois + "/" + annee + " est un " + tabNomJour[numJourSemainePremier])+" ("+numJourSemainePremier+")";
</script>
</body>
</html>
La seconde méthode est la solution que j'ai trouvé à mon problème..
A tester sur
http://wmjuan.free.fr/date_javascript/test_date.html
Normalement les deux scripts doivent donner le même résultat, non?
Eh bien si vous testez ce script le 31 octobre 2008 (ou un autre mois )
Vous n'obtenez pas les mêmes résultats...
Et si vous testez ce script un autre jour que le 31 ( quelque soit le mois ), vous obtenez alors les mêmes résultats...
Alors la question c'est pourquoi le premier script (méthode utilisée dans le calendrier Javascript que j'utilise ) ne fonctionne pas les 31 de chaque mois?
Sérieux ?