Hello, je me suis lancé sur un script pour afficher l'heure du Serveur avec Javascript (pas celle du client).

J'ai lancé mon script aujourd'hui enfin terminé après dur labeur, et je me suis retrouvé face à la plus monstrueuse abberation à laquelle j'aie jamais dû faire face.

Je vous présente mon code ici:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
var now = "<?=$dateSyntax['annee']?>, <?=$dateSyntax['mois']?>, <?=$dateSyntax['jour']?>, <?=$dateSyntax['heure']?>, <?=$dateSyntax['minutes']?>, <?=$dateSyntax['secondes']?>";
 
function initDate()
{
date = new Date();
date.setHours(<?=$date('h')?>);
date.setMinutes(<?=$date('i')?>);
date.setSeconds(<?=$date('s')?>);
date.setDate(<?=$date('d')?>);
date.setMonth(<?=$date('m')?>);
date.setFullYear(<?=$date('Y')?>);
}
initDate();
 
function myDate()
{
date = new Date(date);
 
var noms_mois = new Array('Décembre', 'Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre');
 
var texte = ''; // On crée le texte qui va être affiché
texte += 'Il est '+date.getHours()+'H'+date.getMinutes()+' et '+date.getSeconds()+' secondes.<br/>';
texte += 'Nous sommes le '+date.getDate()+'/'+date.getMonth()+'/'+date.getFullYear()+'.<br/>';
texte += 'Vous êtes donc le '+date.getDate()+' '+noms_mois[date.getMonth()]+' '+date.getFullYear()+'.';
 
document.getElementById('introdate').innerHTML = 'Bonjour <b>Homie</b>, la date serveur est: '+now+'';
document.getElementById('date').innerHTML = texte;
 
date.setTime(date.getTime() + 1000);
}
setInterval(myDate,999);
Tout se passe bien, content, mis à part le fait que cet abruti me donne la date suivante:
Nous sommes le 1/11/2007.
Vous êtes donc le 1 Novembre 2007.
Intrigué, j'ai pensé que le serveur déconnait: ben non la date serveur est bien le 31. J'ai alors ajouté un petit -1 à coté de mon date('d') et pensez-vous qu'il a affiché docilement 31? non il a affiché 30! Je me suis dit "est-il trop con pour comprendre qu'octobre possède 31 jours?" j'ai remplacé -1 par +1 et... Il me dit quand même 1 Novembre.

Un vrai pétage de plombs! Javascript a décidé de ne pas afficher 31. Comment l'empêcher de commettre ce grave délit de discrimination?