Probleme pour changer d'année (date) JAVA

sean -  
 danimo -
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 etc.

//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);

//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
if(nouveauNumSemaine > nombreDeSemaineDansLannee(Locale.FRENCH, anneeEnCours))
{
compteur++;
nouveauNumSemaine = compteur;
anneeEnCours = anneeEnCours + 1;
}

//méthode qui permet d'afficher la date en fonction du numéro de la semaine et de l'année en cours
semaine(nouveauNumSemaine,anneeEnCours);

}
Configuration: Windows XP
Firefox 2.0.0.17

1 réponse

  1. danimo
     
    Salut,

    Je ne comprend pas ton exemple.

    debutSemaine(lundi) -> finSemaine(vendredi)
    Exemple : 3/10/2008 -> 7/10/2008

    Le 3/10/2008 était un vendredi, pas un lundi et le 7/10/2008 un mardi pas un vendredi.

    Il faudrait d'abord commencer avec une bonne date de départ par exemple :

    Voilà ce que je te propose:

    ..........
    static String Sjour = "";
    static String Sn_mois = "";
    static int annee = 0;
    static int num_mois = 0;
    static int n_mois = 0;
    static int jour = 0;
    ...........

    int p1 = 2008;
    int p2 = 10;
    int p3 = 27;

    Calendar cal = new GregorianCalendar(p1, p2-1, p3); // 9 pour octobre le mois obtenu (ou fourni) = 0 à 11

    annee = cal.get(Calendar.YEAR);
    num_mois = cal.get(Calendar.MONTH);
    n_mois = num_mois +1;
    jour = cal.get(Calendar.DAY_OF_MONTH);

    zeroAgauche();

    System.out.print("Semaine de depart " + Sjour + "/" + Sn_mois + "/" + annee + " >>>> ");

    p3 = p3 + 4;
    cal = new GregorianCalendar(p1, p2-1, p3);

    annee = cal.get(Calendar.YEAR);
    num_mois = cal.get(Calendar.MONTH);
    n_mois = num_mois +1;
    jour = cal.get(Calendar.DAY_OF_MONTH);

    zeroAgauche();

    System.out.println(Sjour + "/" + n_mois + "/" + annee);

    // A partir de cette semaine de depart:
    // chaque fois que tu clique buton suivant

    for (int is = 0; is < 81; is++) // boucle de simulation
    {
    p3 = p3 +1;
    cal = new GregorianCalendar(p1, p2-1, p3); // 9 pour octobre le mois obtenu (ou fourni) = 0 à 11

    annee = cal.get(Calendar.YEAR);
    num_mois = cal.get(Calendar.MONTH);
    n_mois = num_mois +1;
    jour = cal.get(Calendar.DAY_OF_MONTH);

    zeroAgauche();

    System.out.print("Semaine suivante " + Sjour + "/" + Sn_mois + "/" + annee + " >>>> ");

    p3 = p3 + 4;
    cal = new GregorianCalendar(p1, p2-1, p3);

    annee = cal.get(Calendar.YEAR);
    num_mois = cal.get(Calendar.MONTH);
    n_mois = num_mois +1;
    jour = cal.get(Calendar.DAY_OF_MONTH);

    zeroAgauche();

    System.out.println(Sjour + "/" + Sn_mois + "/" + annee);
    }

    // et chaque fois que tu clique buton precedent :
    for (int ip = 0; ip < 81; ip++) // boucle de simulation
    {
    p3 = p3 -9;
    cal = new GregorianCalendar(p1, p2-1, p3);

    annee = cal.get(Calendar.YEAR);
    num_mois = cal.get(Calendar.MONTH);
    n_mois = num_mois +1;
    jour = cal.get(Calendar.DAY_OF_MONTH);

    zeroAgauche();

    System.out.print("Semaine precedente " + Sjour + "/" + Sn_mois + "/" + annee + " >>>> ");

    p3 = p3 + 4;
    cal = new GregorianCalendar(p1, p2-1, p3);

    annee = cal.get(Calendar.YEAR);
    num_mois = cal.get(Calendar.MONTH);
    n_mois = num_mois +1;
    jour = cal.get(Calendar.DAY_OF_MONTH);

    zeroAgauche();

    System.out.println(Sjour + "/" + Sn_mois + "/" + annee);
    }

    }

    public static String zeroAgauche()
    {
    // forcer 1 zéro à gauche si jour ou mois < 10
    Sjour = (jour<10?"0":"") + jour;
    Sn_mois = (n_mois<10?"0":"") + n_mois;
    return "";
    }
    }
    0