addition date

addition date - HTML/CSS - Programmation

Marsh Posté le 13-07-2006 à 11:41:26    

Bonjour,
j'ai voulu faire une fonction javascript qui prend une date et un nombre de date et retourne une date en addtion les mois.
i.e:
 
addition_date(22/10/1983,2) retourne :22/12/1983
 
voilà mon code:

Code :
  1. function addition_date(date,nb_mois)
  2.    {
  3.     var j=date.getDate();
  4.     var a=date.getFullYear();
  5.     var m=date.getMonth()+1;
  6.     if (m>12) m-=12;
  7.     var new_date=new Date();
  8.     new_date.setDate(j);
  9.     new_date.setMonth(m);
  10.     new_date.setYear(a);
  11.     return(new_date);
  12.    }


 
 
 
mais ça ne marche pas. Est ce que quelqu'un peut m'aider?
merci d'avance

Reply

Marsh Posté le 13-07-2006 à 11:41:26   

Reply

Marsh Posté le 13-07-2006 à 11:42:58    

mbarekh a écrit :

Bonjour,
j'ai voulu faire une fonction javascript qui prend une date et un nombre de date et retourne une date en addtion les mois.
 
     
 
 


 
 
un nombre de mois j'ai voulou dire!

Reply

Marsh Posté le 13-07-2006 à 12:14:06    

Héhé l'erreur se situe à la ligne où tu utilises nb_mois :p

Reply

Marsh Posté le 13-07-2006 à 13:27:56    

oui d'accord il fallait ajouter +nb_mois mais c'est pas ça le problème.  
le code ne retourne aucun réultat, il s'exécute même pas.

Reply

Marsh Posté le 13-07-2006 à 13:38:18    

Alors là il me faudrait une boule de crystal (ou que tu montres le code qui fait appel à la fonction)

Reply

Marsh Posté le 13-07-2006 à 13:42:12    

je l'utilise par exemple:
 
<body onLoad="alert(addition_date('22/10/1983',2));">
 

Reply

Marsh Posté le 13-07-2006 à 13:59:40    

OK, je vois mieux. Si tu regardes ta console javascript tu vas voir des erreurs expliquant que dans ta fonction, la variable date n'a pas de méthode getDate()
 
Ce qui est normal, vu que tu lui passes une string en parametre...
 
l'équivalent qui doit marcher :

Code :
  1. <body onLoad="alert(addition_date(new Date(1983, 10, 22), 2));">


Message édité par Bidem le 13-07-2006 à 14:00:33
Reply

Marsh Posté le 13-07-2006 à 14:00:22    

ok merci je vais essayer ça!

Reply

Marsh Posté le 13-07-2006 à 14:07:14    

là c'est bcm mieux mais il me donne le mois de fevrier à la place de aout. j'ai du faire une gaffe de calcul, je vais vérifier ça. merci.

Reply

Marsh Posté le 13-07-2006 à 14:16:14    

là j'ai préféré faire una autre fonction plus précise:
 
function addition_date(date,nb_mois)
    {
     var nb_mil_sec= date.getTime();
     var soustr= nb_mois*30*24*3600*1000;
     var res= nb_mil_sec - soustr;
     var new_date= new Date(res);
     return(new_date);
    }
 
mais là je ne comprends pas pourquoi il me retourne septembre au lieu de aout!

Reply

Marsh Posté le 13-07-2006 à 14:16:14   

Reply

Marsh Posté le 13-07-2006 à 15:01:08    

mbarekh > Dans ta nouvelle fonction, tu décales de x*30 jours mais la majorité des mois ont 28 ou 31 jours. En fait, on peut même dire qu'il n'y a jamais 3 mois d'affilé qui possédent 30 jours. Décaler la date de 3*30 jours est donc différents de décaler de trois mois.
 
A noter aussi qu'en javascript, janvier est le mois de numéro 0 et décembre celui de numéro 11. Le mois 10 est donc celui de novembre et le mois 8 celui de septembre.
C'est donc normal qu'un décalage en arriére de deux mois par rapport au mois de numéro 10 donne le mois de septembre.

Reply

Marsh Posté le 13-07-2006 à 15:52:31    

ok omega2. merci pour les consignes ;)
j'ai enfin réussi à faire un truc qui marche :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed