Help: Date en javascript qui retourne une mauvaise date

dgfhierf Messages postés 5 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 4 mars 2015 - 27 mai 2009 à 12:31
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 - 27 mai 2009 à 14:39
Bonjour,

Je voudrais ajouter 30 jours à une date et je ne pense pas me tromper en faisant :

 myDate = new Date(annee,mois,jour);
 New_date = myDate;
 New_date.setDate((New_date.getDate()+30));
 //New_date = new Date(myDate.getTime() + (1000 * 60 * 60 * 24 * 30)); New_jour New_date.getDate();if(New_jour<10) New_jour "0" + New_jour;
 New_mois = New_date.getMonth();if(New_mois<10) New_mois= "0" + New_mois; 
 New_annee = New_date.getFullYear();
 New_date = New_jour+'/'+New_mois+'/'+New_annee;

Cela marche dans plusieurs cas par contre quand je tente le coup avec le 31/05/09 j'obtient le 31/06/09, date qui n'existe pas dans le calendrier puisque juin n'a que 30 jours.
Pourriez vous m'aider a comprendre ce qui se passe?

Merci d'avance

4 réponses

Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
27 mai 2009 à 12:45
bonjour,
regarde getMonth, ça varie de 0 à 11
et non pas de 1 à 12
@+
0
dgfhierf Messages postés 5 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 4 mars 2015
27 mai 2009 à 12:53
Ma fonction exacte est la suivante :

function transmet_date(annee,mois,jour)
{
if(jour<10) jour = "0" + jour;
if(mois<10) mois= "0" + mois;
myDate = new Date(annee,mois,jour);
New_date = myDate;
New_date.setDate((New_date.getDate()+30));
New_annee = New_date.getFullYear();
New_mois = New_date.getMonth();if(New_mois<10) New_mois= "0" + New_mois;New_jour New_date.getDate();if(New_jour<10) New_jour "0" + New_jour;
New_date = New_jour+'/'+New_mois+'/'+New_annee;
document.getElementById('result_date').innerHTML="La période de diffusion s'etendra du "+jour+"/"+mois+"/"+annee+" au "+New_date+"";
}
}

Et le résultat est : 31/05/2009 au 31/06/2009

Merci de ta réponse mais j'incremente déjà mon mois de 1 avant l'appel de la fonction.

D'autres idées?

Merci d'avance
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
27 mai 2009 à 14:06
je ne sais pas si j'ai compris... mais :

<script>
function transmet_date( annee, mois, jour )
{    var myDate = new Date ( annee, mois, jour );
    var nextDate = new Date ( annee, mois+2, 1 ) ;
    nextDate.setTime( nextDate.getTime()-24*3600*1000);
    document.write(
        jour+"/"+mois+"/"+annee+" "+
        nextDate.getDate()+'/'+nextDate.getMonth()+'/'+nextDate.getFullYear()
        );
}
transmet_date('2009','4','31');
</script>
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
27 mai 2009 à 14:39
il fallait bien sûr ( !?!?? ) lire
    var myDate = new Date ( annee, mois, jour );
    var nextDate = new Date ( annee, mois+2, 1 ) ;
    nextDate.setTime( nextDate.getTime()-24*3600*1000);
   
0
Rejoignez-nous