IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Collection et Stream Java Discussion :

probleme avec la classe calendar


Sujet :

Collection et Stream Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 5
    Par défaut probleme avec la classe calendar
    J'essaie de generer un agenda, donc une liste de jours, et j'utilise la classe calendar pour voir a quel jour(lundi, mardi...) correspond tel ou tel jour;

    Ca marche, mais uniquement pour les mois de septembre et octobre, les resultats de get(Calendar.DAY_OF_WEEK) ne correspondent pas pour les autres mois

    Voici mon code, aidez moi svp!!!


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    public void setListeDesJours(int moisInt,int anneeInt){
     
    		this.jours.clear();
    		this.calendar.clear();
     
    		String mois = String.valueOf(moisInt);
     
    		Jour j = new Jour();
     
    		int nb =this.nbJours(moisInt,anneeInt);
     
    		for (int i=1; i<=nb;i++){
    			this.calendar.clear();
    			this.calendar.set(moisInt,anneeInt,i);
    			j = new Jour(i,mois,this.calendar.get(Calendar.DAY_OF_WEEK),anneeInt);
    			this.jours.add(j);
    		}
    	}



    this.jour est une ArrayList, this.calendar est un GregorianCalendar, la classe jour est juste une classe toute simple avec 4 attributs int et String

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 5
    Par défaut
    D'apres vous est ce à cause de la classe Calendar, et si oui, y aurait il un autre moyen de générer ma liste de jours?

    En tout cas c'est vraiment bizarre comme problème....

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 30
    Par défaut
    Personnelement je ferais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Jour j = new Jour();
    for (int i = 1 ; i <= nb ; i++)
    {
        cal.set(Calendar.MONTH, mois);
        cal.set(Calendar.YEAR, anneeInt);
        cal.add(Calendar.DAY_OF_YEAR, 1);
        j = new jour(i,mois, cal.get(Calendar.DAY_OF_WEEK), anneeInt);
        this.jours.add(j);
    }

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 5
    Par défaut
    euh, ça marche encore moins(meme pas pour septembre,octobre)

    Je crois que le probleme vient de la Calendar...
    Mais va savoir pourquoi

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 5
    Par défaut
    J'ai résolu le problème, j'utilise plus cette classe de M... qu'est Calendar, j'ai utilisé la formule mathématique de Zeller.

    Merci quand même à ceux qui ont pensé!

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 30
    Par défaut
    Euh c'est particulier car c'est vraiment un classe qui fonctionne a merveille, il faut faire attention a qqs trucs cependant : les mois commençant à 0 et non a 1 comme on aurait pu s'y attendre, de meme que les jours de la semaine sont numérotés de la façon suivante DIMANCHE = 1, LUNDI = 2, ... ton pb ne vient pas le là?

    en reprennant ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    public void setListeDesJours(int moisInt, int anneeInt){
     
          this.jours.clear();
          this.calendar.set(Calendar.YEAR , anneeInt);
          this.calendar.set(Calendar.MONTH, moisInt - 1);
          this.calendar.set(Calendar.DAY_OF_MONTH, 1);
     
          String mois = String.valueOf(moisInt);
     
          Jour j = new Jour();
     
         // Fait la meme chose que ta fonction nbJours(moisInt,anneeInt);
          int nb = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
     
          for (int i = 1 ;  i <= nb ; i++)
         {
             this.calendar.add(Calendar.DAY_OF_YEAR, 1);
             j = new Jour(i,mois,this.calendar.get(Calendar.DAY_OF_WEEK),anneeInt);
             this.jours.add(j);
          }
       }
    moi j'ai tester le code suivant qui marche trés bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    import java.util.Calendar;
    import java.util.GregorianCalendar;
     
    public class ClasseDeTest
    {
     
      /**
       * @param args
       */
      public static void main(String[] args)
      {
        Calendar calendar = new GregorianCalendar();
        int mois = 12;
        calendar.clear();
        calendar.set(Calendar.YEAR , 2005);
        calendar.set(Calendar.MONTH, mois - 1);
        calendar.set(Calendar.DAY_OF_MONTH, 1);
     
        String moisStr = String.valueOf(mois);
     
        int nb = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); //this.nbJours(moisInt,anneeInt);
     
        for (int i = 0 ;  i < nb ; i++)
        {
          System.out.println(calendar.get(Calendar.DAY_OF_WEEK) + " " + calendar.get(Calendar.DAY_OF_MONTH) + "/" + moisStr + "/" + calendar.get(Calendar.YEAR));
          calendar.add(Calendar.DAY_OF_YEAR, 1);
          //this.jours.add(j);
        }
      }
     
    }

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 5
    Par défaut
    Je te remercie, j'avais regleé le probleme de decalages du mois et du jour.

    De toute façon, pour te dire la vérité, je suis hyper à la bourre dans mon projet donc je vais continuer comme j'ai fait (avec la formule de Zeller).

    Merci quand même!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [débutant] probleme avec une classe arbre
    Par go_all_in dans le forum C++
    Réponses: 17
    Dernier message: 08/06/2006, 10h33
  2. [POO] Problème avec les classes
    Par peypey dans le forum Langage
    Réponses: 8
    Dernier message: 03/05/2006, 15h05
  3. probleme avec la classe vector
    Par elekis dans le forum Langage
    Réponses: 4
    Dernier message: 12/04/2006, 16h25
  4. Problème avec la classe Calendar
    Par afrikha dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 30/03/2006, 08h48
  5. Probleme avec une class template
    Par lenectar dans le forum Langage
    Réponses: 2
    Dernier message: 01/03/2006, 10h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo