rhan_659
Messages postés85Date d'inscriptionlundi 1 novembre 2004StatutMembreDernière intervention30 juin 2011
-
14 avril 2009 à 11:13
rhan_659
Messages postés85Date d'inscriptionlundi 1 novembre 2004StatutMembreDernière intervention30 juin 2011
-
14 avril 2009 à 12:56
Bonjour
j'utilise la fonction suivante pour calculer le nombre d ejours entre 2 dates
les dates que je récupère sont des strings au format JJ/MM/AAAA
et j'ai un petit souci avec l'objet Date1 dans certain cas il passe au mois suivant :
exemple le 23/03/2009 deviens le 23/04/2009
alert(Date1) renvois => Sun Apr 19 2009 00:00:00 GMT+0200
mais alert(Date1.getMonth()) renvois 3
je suis un peu perdu, j'ai du louper un truc mais quoi....
Merci
function nbDays(sDate1,sDate2){
var nbYear = parseInt(sDate1.substring(6, 10),10)
var nbMonth = parseInt(sDate1.substring(3, 5),10)
var nbDay = parseInt(sDate1.substring(0, 2),10)
var date1 = new Date(nbYear,nbMonth,nbDay);
var date2 = new Date();
if (sDate2 "undefined" || sDate2 null || sDate2 == ""){
date2 = new Date(date2.getFullYear(),date2.getMonth(),date2.getDate());
}else{
date2 = new Date(parseInt(sDate2.substring(6, 10),10),parseInt(sDate2.substring(3, 5),10),parseInt(sDate2.substring(0, 2),10))
}
Zobibol
Messages postés469Date d'inscriptionmercredi 9 janvier 2002StatutMembreDernière intervention20 février 20176 14 avril 2009 à 12:38
Bonjour, le problème est du au fait qu'en javascript (et plein d'autre langages) les mois commencent à 0:
0->Janvier
1 ->Février...
du coup dans ta méthode de calcul, il faut retrancher un au mois des dates passées en paramètres:
et voilà qui devrait résoudre le problème
function nbDays(sDate1,sDate2){
var nbYear = parseInt(sDate1.substring(6, 10),10);
var nbMonth = parseInt(sDate1.substring(3, 5),10) -1:
var nbDay = parseInt(sDate1.substring(0, 2),10);
var date1 = new Date(nbYear,nbMonth,nbDay);
var date2 = new Date();
if (sDate2 "undefined" || sDate2 null || sDate2 == ""){
date2 = new Date(date2.getFullYear(),date2.getMonth(),date2.getDate());
}else{
date2 = new Date(parseInt(sDate2.substring(6,
10),10),(parseInt(sDate2.substring(3,
5),10)-1),parseInt(sDate2.substring(0, 2),10))
}