Salut,

J'essaye de faire (corriger plutôt) ou de trouver une fonction capable de soustraire une date à une autre dont le résultat dépendrait de l'intervalle (une période).
Par exemple :
DateDiff("d", "01/01/2006", "18/06/2006") retournerait 128
DateDiff("m", "01/01/2006", "18/06/2006") retournerait 5

Le problème est là, en fait si je veux obtenir le nombre de mois entre deux dates, j'aurais très souvent un nombre décimal. Lorsqu'on lit le script on comprend pourquoi :
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
		function DateDiff(per,datelimite,datedebut)
		{     		      
			if (datelimite != '')
			{	
				jourdeb = datedebut.substring(0,2);
				moisdeb = datedebut.substring(3,5);
				anneedeb = datedebut.substring(6,10);
				var new_datedebut = moisdeb + "/" + jourdeb + "/" + anneedeb
 
				jourlim = datelimite.substring(0,2);
				moislim = datelimite.substring(3,5);
				anneelim = datelimite.substring(6,10);
				var new_datelimite = moislim + "/" + jourlim + "/" + anneelim
 
				var datelim = new Date(new_datelimite)
				var datedeb = new Date(new_datedebut)		   	
				var d = (datelim.getTime()-datedeb.getTime())/1000
 
				switch(per)
				{
					case "yyyy": d/=12
					case "m": d*=12*7/365.25
					case "ww": d/=7
					case "d": d/=24
					case "h": d/=60
					case "n": d/=60
				}					
				//var diff = Math.ceil(d);
				var diff = Math.floor(d);
				alert(diff +"**"+ d);
				if (diff < 0 ) {diff = 1200 + diff}
				return diff;
			}else {
				return "";
			}      
		}
Le cas "m" est approximatif, DateDiff("m", "01/01/2006", "01/07/2006") retourne un d = 5.945.
Plus embêtant DateDiff("m", "01/01/2006", "18/06/2006") retourne un d = 5.518, le Math.ceil me retourne donc 6 ce qui est faux.
Voyez-vous mon problème?
Connaîtriez-vous une fonction existante faisant ce que je cherche? Ou un algorithme infaillible?