[JAVASCRIPT] convertir une date et comparer

Résolu
Isabelle -  
 SoukaSR4 -
Bonjour,
Je désire convertir deux chaine au format "dd/mm/yyyy" en date javascript, puis comparer les deux dates.

Avez-vous un script sous la main ? je ne trouve rien de concluant sur Google.

Merci d'avance pour toute réponse

Isabelle

7 réponses

  1. Utilisateur anonyme
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    
    <html>
    <head>
    
    	<script>
    	  //On suppose que la date entrée a été validée auparavant
    	  //au format dd/mm/yyyy
    	  function getDate(strDate){	  
    	    day = strDate.substring(0,2);
    		month = strDate.substring(3,5);
    		year = strDate.substring(6,10);
    		d = new Date();
    		d.setDate(day);
    		d.setMonth(month);
    		d.setFullYear(year); 
    		return d;  
    	  }
    	  
    	  //Retorune:
    	  //   0 si date_1=date_2
      	  //   1 si date_1>date_2
    	  //  -1 si date_1<date_2	  
    	  function compare(date_1, date_2){
    	    diff = date_1.getTime()-date_2.getTime();
    	    return (diff==0?diff:diff/Math.abs(diff));
    	  }
    
    	</script>
    </head>
    
    <body>
    
    Date 1: <input name="d1" id="d1" type="text" value="01/10/2004" /><br/>
    Date 2: <input name="d2" id="d2" type="text" value="02/05/2005" />
    <p/>
    <button onclick="javascript: alert(compare(getDate(document.all('d1').value),getDate(document.all('d2').value)));">Comparer</button>
    </body>
    </html>
    


    ;-)
    HackTrack
    33
    1. Fraisouille
       
      Attention avec javascript il faut retirer un au mois quand on détermine une date: dans le code ci-dessus il faut utiliser
      d.setMonth(month-1);

      plutôt que
      d.setMonth(month);


      ;)
      0
  2. Mael2
     
    Il faut penser aussi aux années bissextiles.

    Cette année on est en 2007.

    Donc si on a :
    day = 29
    month = 2
    year = 2000

    Et si on fait ceci :

    d = new Date();
    d.setDate(day);
    d.setMonth(month-1);
    d.setFullYear(year);
    return d;

    On aura en fait dans d le 01/03/2000

    Il faudrait indiquer d'abord l'année, puis le mois et enfin le jour :
    d = new Date();
    d.setFullYear(year);
    d.setMonth(month-1);
    d.setDate(day);
    return d;

    Plus simplement on peut faire :
    d = new Date(year, month-1, day);
    15
  3. Throdo
     
    En faisant appel à la méthode parse de l'obejt Date qui récupère le nombre de milliseconde depuis la date de référence de Javascript (env. 1970).
    Il suffit après de faire une différence pour connaître si la date est supérieure, égale ou inférieure.

    function fCompareDate(pDateDebut,pDateFin) {
    var DureeDebut = Date.parse(pDateDebut);
    var DureeFin = Date.parse(pDateFin);

    var iComparaison= DureeFin - DureeDebut;

    return iComparaison;
    }

    On peut décliner différemment l'utilisation de cette fonction selon les besoins.

    Merci à SelfHTML pour les infos sur l'objet Date.
    Lien direct vers la ressource : http://fr.selfhtml.org/javascript/objets/date.htm
    10
  4. Maxkater
     
    Mmm il n'y a pas un autre problème aussi ?
    		d = new Date();
    		d.setDate(day);
    		d.setMonth(month-1);
    		d.setFullYear(year); 
    		return d;  
    


    Lorsque l'on dit new Date(), cela prend la date du jour. Or si par exemple on est en Février avec 28 jours dans le mois...

    Si day vaut 31, vu que l'on execute le setDate en premier, la date va valoir 31/02/2006... Qui va etre converti automatiquement en 03/03/2006... Ce qui déjà à partir de là retourne une mauvaise date non ?

    A ce moment là on peut tout simplement mettre à la place :

    d = new Date(0); //01/01/1970
    


    Ainsi on est sur. Parce que Janvier est un mois à 31 jours, donc on ne va pas déborder.
    5
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Zep3k!GnO Messages postés 2049 Statut Membre 200
     
    en date javascript
    tu veux dire par la ?! ( indique le format ,ex : jj/mm/aaaa)

    Zep3k!GnO
    -3
    1. SoukaSR4
       
      et si on veut afficuer "jeudi 13 mars" en javascript? avec timestamp
      0
  7. isabelle
     
    genre : du type date.
    Le format "dd/mm/yyyy"
    -4