Bonjour,

J'ai trouvé un script pour calculer le numéro de semaine à partir d'une date. Cependant, en aportant des modifications, je ne comprends pas pourquoi le script déconne. on me revoie dans un alert toujours des trucs bizarre comme pour la date d'aujourd'hui au format 04/02/2008 la semaine 444 .

Voici le code :
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<html><title>Test Date</title><head>
<script type="text/javascript">
function test(){
	var uneDate=document.getElementById('test').value;
	var elem = uneDate.split('/');
	jj = elem[0];
	mm = elem[1]-1;
	aaaa = elem[2];
	var date_liv = DefSemaineNum(aaaa, mm, jj);
	alert(date_liv);
}
/******************************************************
FONCTION QUI DETERMINE LE NUMERO DE LA SEMAINE EN COURS
******************************************************/
function DefSemaineNum(aaaa, mm, jj)
{
//initialisation des variables
//----------------------------
	var MaDate  = new Date(aaaa,mm,jj);//date a traiter
	var annee = MaDate.getFullYear();//année de la date à traiter
	var NumSemaine = 0,//numéro de la semaine
 
	// calcul du nombre de jours écoulés entre le 1er janvier et la date à traiter.
	// ----------------------------------------------------------------------------
	// initialisation d'un tableau avec le nombre de jours pour chaque mois
	ListeMois = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	// si l'année est bissextile alors le mois de février vaut 29 jours
	if (annee %4 == 0 && annee %100 !=0 || annee %400 == 0) {ListeMois[1]=29};
	// on parcours tous les mois précédants le mois à traiter 
	// et on calcul le nombre de jour écoulé depuis le 1er janvier dans TotalJour
	var TotalJour=0;
	for(cpt=0; cpt<mm; cpt++){TotalJour+=ListeMois[cpt];}
	TotalJour+=jj;
 
	//Calcul du nombre de jours de la première semaine de l'année à retrancher de TotalJour
	//-------------------------------------------------------------------------------------
	//on initialise dans DebutAn le 1er janvier de l'année à traiter
	DebutAn = new Date(annee,0,1);
	//on determine ensuite le jour correspondant au 1er janvier
	//de 1 pour un lundi à 7 pour un dimanche/
	var JourDebutAn;
	JourDebutAn=DebutAn.getDay();
	if(JourDebutAn==0){JourDebutAn=7};
 
	//Calcul du numéro de semaine
	//----------------------------------------------------------------------
	//on retire du TotalJour le nombre de jours que dure la première semaine 
	TotalJour-=8-JourDebutAn;
	//on comptabilise cette première semaine
	NumSemaine = 1;
	//on ajoute le nombre de semaine compléte (sans tenir compte des jours restants)
	NumSemaine+=Math.floor(TotalJour/7);
	// s'il y a un reste alors le n° de semaine est incrémenté de 1
	if(TotalJour%7!=0){NumSemaine+=1};
	return(NumSemaine);
 
}
</script>
</head>
<body>
<input type="text" id="test"><input type="button" id="buton" onClick="test();">
<script type="text/javascript">
/*aaaa = eval(prompt('Entrez l\'année (aaaa) :', ''));
mm = eval(prompt('Entrez le mois (mm) :', ''))-1;
jj = eval(prompt('Entrez le jour (jj) :', ''));
document.write('Semaine numero : '+DefSemaineNum(aaaa, mm, jj));*/
</script>
</body>
</html>