Augmenter une date de 4 jours (sans calendar)

daviddubois Messages postés 92 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 6 janvier 2012 - 23 mai 2007 à 17:26
lafolle24320 Messages postés 406 Date d'inscription samedi 26 mars 2005 Statut Membre Dernière intervention 29 juin 2009 - 24 mai 2007 à 09:41
Bonjour tout le monde,

J'ai une méthode main qui envoie trois informations (jour, mois, année) à une classe que j'ai créé.

Cette clasee me renvoit simplement la date par rapport à ces trois informations envoyées.

Ma question :

Sant utiliser java.util.calendar, est-il possible d'envoyer un entier à la classe et augment la date du constructeur (car j'ai mis des valeurs pas défaut dans le constructeur de la date) et qu'elle me retourne la date augmenté de l'entier envoyé ?

Exemple :

Via clavier.lireInt() je demande :

"veuillez indiquer combien de jour voulez-vous additinner au 24 mai 2007", si je mets 4, j'obtiens 28 mai.

Merci d'avance pour votre aide.

Voici ce que j'ai déjà fait :

voici ma classe date (plus bas vous trouverez la classe main)

import java.util.Calendar;
public class Date
{
 private int jour;
 private int mois;
 private int annee;
 
 public Date()
 {
  jour = 1;
  mois = 1;
  annee = 2000;
 }
 
 public void setDate(int jour,int mois,int annee)
 {
  if ((jour<1)||(jour>31))
  {
   this.jour=1;
  }
  else
  {
   this.jour = jour;
  }
  
  if((mois<1)||(mois>12))
  {
   this.mois = 1;
  }
  else
  {
   this.mois = mois;
  }
  
  if(this.jour>nbJoursMois(this.mois,this.annee))
  {
   this.jour = nbJoursMois(this.mois,this.annee);
   System.out.println("vrai");
  }
  
  this.annee = annee;
 }
 
 public String toFormat1()
 {
  String s="";
  
  if(this.jour<10)
  {
   s+= "0"+this.jour +"/";
  }
  else
  {
   s+= this.jour+"/";
  }
  
  if(this.mois <10)
  {
   s+= "0"+this.mois+"/";
  }
  else
  {
   s+=this.mois+"/";
  }
  
  s+= this.annee;
  
  return s;
 }
 
 public String toFormat2()
 {
  String s="";
  
  if(this.jour<10)
  {
   s+= "0" + this.jour+"/";
  }
  else
  {
   s+= this.jour+"/";
  }
  
  switch(mois)
  {
   case 1: s+= "Janvier"+"/";break;
   case 2: s+= "fevrier"+"/";break;
   case 3: s+= "mars"+"/";break;
   case 4: s+= "avril"+"/";break;
   case 5: s+= "mai"+"/";break;
   case 6: s+= "juin"+"/";break;
   case 7: s+= "juillet"+"/";break;
   case 8: s+= "aout"+"/";break;
   case 9: s+= "septembre"+"/";break;
   case 10: s+= "octobre"+"/";break;
   case 11: s+= "novembre"+"/";break;
   case 12: s+= "decembre"+"/";break;
  }
  
  s+= this.annee;
  
  return s;
 }
 
 public int nbJoursMois(int mois, int annee)
 {
  
  int nbJourMois = 1;
  switch(mois)
  {
   
   case 1:
   case 3:
   case 5:
   case 7:
   case 8:
   case 10:
   case 12:nbJourMois =31;break;
   case 4:
   case 6:
   case 9:
   case 11:nbJourMois = 30;break;
   case 2:
   {
    if (anneeBissextile(annee))
    {
     nbJourMois = 29;
    }
    else
    {
     nbJourMois = 28;
    }
    
   }
   
   
  }
  
  return nbJourMois;
 }
 
 private boolean anneeBissextile(int annee)
  {
   return annee%4==0 && (annee%100!=0 || annee%400==0);
 }
}

La méthode main :

public class DateTest
{
 public static void main(String [] args)
 {
  Date maDate = new Date();
  
  System.out.println("La date du constructeur : " + maDate.toFormat1());
  
  maDate.setDate(31,2,2007);
  
  System.out.println("La date d'aujourd'hui au format 1 : " + maDate.toFormat1());
  
  System.out.println("La date d'aujourd'hui au format 2 : " + maDate.toFormat2());
 }
}

5 réponses

lafolle24320 Messages postés 406 Date d'inscription samedi 26 mars 2005 Statut Membre Dernière intervention 29 juin 2009 7
23 mai 2007 à 18:06
pourquoi ne crée tu pas un setMois ou encore un setJour ???
public void setJour(int nbJourAAjoute)
{
jour = jour + nbJourAAjoute;
}

et après tu rappelle ton setDate
bon courage

lafolle
0
daviddubois Messages postés 92 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 6 janvier 2012
23 mai 2007 à 18:46
Bonjour lafolle,

Merci pour cette piste.

Mais comment fais-tu si on ajoute 10 jours au 24 mai, on passe en juin, comme est-ce qu'il va le savoir ?

Pire, si on veut rajouter 50 jours au 24 mai ?

Je pense que ce n'est pas facile à faire.

Merci encore.

beegees
0
lafolle24320 Messages postés 406 Date d'inscription samedi 26 mars 2005 Statut Membre Dernière intervention 29 juin 2009 7
24 mai 2007 à 08:41
qui va savoir???
Sois tu fais un message d'avertissement en lui indiquant avant d'affecter la valeur que tu va changer de mois soit tu lui affiche la date après

je ne vois pas trop où se situe ton problème là

lafolle
0
daviddubois Messages postés 92 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 6 janvier 2012
24 mai 2007 à 08:45
Merci pour ta réponse.

Tu ne pourrais pas faire un exemple de code stp /

Merci d'avance.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lafolle24320 Messages postés 406 Date d'inscription samedi 26 mars 2005 Statut Membre Dernière intervention 29 juin 2009 7
24 mai 2007 à 09:41
en fait je vais pas te faire le code parce que je suis au boulot et que j'ai pas mal de boulot. Ce que je peux te conseillé c dans ton setJour(). tu appelle une méthode simul date. Ce srea une date temproraire et tu pourra y voir si tu change de moi. si cette fonction simul date te renvoi (true) donc tu a changé de moi alors tu fais une joptionpane.showmessagedialog. si l'utilisateur clique sur ok alors tu exécute jour= jour + nbJour et ensuite ton setDate.


voilà

bonne continuation

lafolle
0
Rejoignez-nous