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 :

[Date] probleme pour passer à l'année supérieure


Sujet :

Collection et Stream Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Points : 54
    Points
    54
    Par défaut [Date] probleme pour passer à l'année supérieure
    Bonjour,

    J'affiche une date sous la forme :
    debutSemaine(lundi) -> finSemaine(vendredi)
    Exemple : 3/10/2008 -> 7/10/2008

    Je possède un boutonPrecedent et un boutonSuivant pour faire varier la date.
    Mon problème se situe quand je veux changer d'année en cliquant sur le boutonSuivant. J'arrive à passer en 2009 correctement, mais pas en 2010.

    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
     
     
    //j'appelle la méthode suivante dans l'actionPerformed de mon boutonSuivant
     
    int compteur = 0;
    public void afficherSemaineSuivante(){
     
        Calendar c = Calendar.getInstance(Locale.FRENCH);
        int anneeEnCours = c.get(Calendar.YEAR);
     
       if(nouveauNumSemaine > nombreDeSemaineDansLannee(Locale.FRENCH, anneeEnCours)) //je teste si le numéro de la semaine que j'affiche est supérieur au nombre de semaine dans l'année en cours
       {
         compteur++;
         nouveauNumSemaine = compteur;
         anneeEnCours = anneeEnCours + 1;
       }
     
       semaine(nouveauNumSemaine,anneeEnCours); //méthode qui permet d'afficher la date en fonction du numéro de la semaine et de l'année en cours
     
    }

  2. #2
    Rédacteur
    Avatar de lunatix
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2002
    Messages
    1 960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 960
    Points : 3 736
    Points
    3 736
    Par défaut
    euh, tu as une raison de pas utiliser les methodes de l'api calendar pour ajouter ?

    genre calendar.add(1, Calendar.CE_QUE_TU_VEUX)
    me semble que ca fait tout seul ce que tu veux faire

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Points : 54
    Points
    54
    Par défaut
    J'ai modifié mon code. Je fais directement le test avec le if dans ma fonction semaine auquel je passe maintenant uniquement le numéro de semaine.
    Si je clique uniquement sur le boutonSuivant je peux effectivement aller aux années suivantes mais je n'arrive pas à conserver des numéros de semaines correctes pour toutes les années. J'ai essayé de mettre un compteur mais cela numérote bien les semaines uniquement pour l'année qui suit l'année en cours.
    Exemple : on est la semaine 52 du 10/11/2008 -> 14/11/2008, je vais jusqu'à la semaine 1 du 29/12/2008 -> 02/01/2009, aucun probleme. Par contre si je tente d'aller en 2010, le numéro de la semaine est 54.

    De plus, si je clique sur le boutonPrecedent je ne peux pas revenir en arrière, ce bouton fonctionne seulement si c'est l'année en cours.
    Exemple :
    on est la semaine 45 du 3/10/2008 -> 7/10/2008, je vais jusqu'à la semaine 2 du 7/01/2009 -> 11/01/2009 . Si je tente de revenir en arrière en 2008, je ne peux pas.

    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
     
     
    int compteur = 0;
    boolean etatSem = false;
     
    public void semaine(int numSemaine){
     Calendar c = Calendar.getInstance();
     int anneeEnCours = c.get(Calendar.YEAR);
     
     if(numSemaine> nombreDeSemaineDansLannee(Locale.FRENCH,anneeEnCours)) //je teste si le numéro de la semaine que j'affiche est supérieur au nombre de semaine dans l'année en cours
       {
         c.add(Calendar.YEAR, 1);
         etatSem = true;
       }
     
     if((etatSem == true) && (numSemaine != 53))
     {
      compteur++;
      numSemaine = compteur;
      etatSem=false;
     } 
     
     if(etatSem == true)
    {
      compteur++;
      numSemaine = compteur;
    }
     
    c.set(Calendar.WEEK_OF_YEAR,numSemaine);

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut
    Je crois qu'il faut que tu repartes sur de bases saines dans ton raisonnement.

    Tu veux pouvoir naviguer dans les semaines, non ? Pourquoi ne pas faire un wrapper autour d'un objet Calendar ?

    Ton code force l'année en cours et compare le nombre de semaines par rapport à soit l'année en cours, soit l'année suivante. D'où le fait que tu ne puisses aller au delà de l'année 2009 sans problème.

    De plus tu testes la chose suivante : si le numéro de la semaine courante > nombre de semaines dans l'année, alors ajouter 1 à l'année. Et si par hasard on voulait la même semaine dans deux ans, on reste bloqué à l'année suivante.

    Bref... repenser cette portion de code ne paraît pas un luxe.

Discussions similaires

  1. [Smarty] Un probleme pour passer des variables avec Smarty
    Par aztec dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 31/03/2008, 15h01
  2. probleme pour passer un parametre entre 2 JSP
    Par le_style dans le forum Struts 1
    Réponses: 13
    Dernier message: 20/06/2007, 10h56
  3. Réponses: 4
    Dernier message: 07/06/2007, 11h40
  4. Probleme pour passer une Procedure
    Par Kahiba dans le forum Delphi
    Réponses: 10
    Dernier message: 04/10/2006, 10h37
  5. Probleme pour passer de l'écriture html a php
    Par cyberdevelopment dans le forum Langage
    Réponses: 2
    Dernier message: 18/08/2006, 17h24

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