Pb avec les dates

[Résolu]
Signaler
Messages postés
85
Date d'inscription
lundi 1 novembre 2004
Statut
Membre
Dernière intervention
30 juin 2011
-
Messages postés
85
Date d'inscription
lundi 1 novembre 2004
Statut
Membre
Dernière intervention
30 juin 2011
-
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))
    }
   
    return    parseInt((date2.getTime()-date1.getTime())/86400000);
}

2 réponses

Messages postés
469
Date d'inscription
mercredi 9 janvier 2002
Statut
Membre
Dernière intervention
20 février 2017
6
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))
    }
   
    return    parseInt((date2.getTime()-date1.getTime())/86400000);
}
Messages postés
85
Date d'inscription
lundi 1 novembre 2004
Statut
Membre
Dernière intervention
30 juin 2011

bon sang ! mais c'est bien sur !!!

cétait ça, j'avais compeltement zapé ce détail !

merci