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

Langage Java Discussion :

Jour de la semaine avec GregorianCalendar


Sujet :

Langage Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 21
    Points : 10
    Points
    10
    Par défaut Jour de la semaine avec GregorianCalendar
    Bonjour,


    J'ai un petit soucis avec l'utilisation du calendar en java...

    En fait je voudrais que le premier jour de la semaine soit le lundi.
    Et donc que par la suite quand je récupére le jour de la semaine, si je suis un lundi je récupère 1.

    Voilà mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Calendar ldDatePassage = new GregorianCalendar(); 
    ldDatePassage.setFirstDayOfWeek(Calendar.MONDAY); 
    ldDatePassage.setTime(loTempDatePsgTrp.getDatePsgTrp());
    Mais si par exemple loTempDatePsgTrp.getDatePsgTrp()); est le 14/03/2010 (donc dimanche prochain) quand je fais ensuite:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ldDatePassage.get(Calendar.DAY_OF_WEEK)
    Je récupère 1 alors que je voudrais récupèrer 7!!


    Vous voyez ou sa cloche?

    Merci d'avance!

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Tout d'abord, il ne faut jamais utiliser les valeurs littérales à la place des constantes. Tu n'as pas à savoir que MONDAY c'est 45, SUNDAY c'est 342531, etc... Tu utilises les constantes, rien de plus.
    Ensuite, tu verras que dans la javadoc, la constante SUNDAY vaut 1 puisque aux USA le premier jour de la semaine est le dimanche. Du coup, lorsque tu demandes le jour de la semaine pour un dimanche, tu obtiens un java.util.Calendar.SUNDAY

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    Ok!
    je croyais que le fait de faire un setFirstDayOfWeek décaler les valeur retourné par get(Calendar.DAY_OF_WEEK), mais en fait non^^

    Bon du coup je contourne mon problème en utilisant ca:

    ldDatePassage.get(Calendar.DAY_OF_WEEK)+5)%7

    ps: Je sais que c'est pas bien d'utiliser les valeurs litteral, mais bon les gens qui ont fais la base de donné ont marqué dedans lundi = 1 etc
    Du coup c'est la merde :/

    En tout cas merci pour ta réponse!

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 563
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 563
    Points : 21 627
    Points
    21 627
    Par défaut
    Citation Envoyé par xav3601 Voir le message
    ps: Je sais que c'est pas bien d'utiliser les valeurs litteral, mais bon les gens qui ont fais la base de donné ont marqué dedans lundi = 1 etc
    Du coup c'est la merde :/
    Pas du tout, tu dois juste convertir les constantes littérales en nombres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public static int convertDayForDb(int javaDay) {
      switch(javaDay) {
        case Calendar.MONDAY: return 1;
        case Calendar.TUESDAY: return 2;
        case Calendar.WEDNESDAY: return 3;
        case Calendar.THURSDAY: return 4;
        case Calendar.FRIDAY: return 5;
        case Calendar.SATURDAY: return 6;
        case Calendar.SUNDAY: return 7;
        default: throw new IllegalArgumentException("Illegal value for Calendar day of week: " + javaDay);
      }
    }
    Je recommande une énumération complète, car franchement, l'ordre des jours de part le monde, c'est la m*rd*.

    Une autre méthode serait de renvoyer 7 pour Calendar.SUNDAY, et sinon, renvoyer javaDay - Calendar.MONDAY + 1.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 18/09/2009, 14h30
  2. Comment calculer un jour de la semaine avec Joda
    Par ttttnht dans le forum API standards et tierces
    Réponses: 6
    Dernier message: 08/09/2008, 17h54
  3. Changement du jour de la semaine avec java.util.GregorianCalendar
    Par Alexandre T dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 10/09/2007, 10h01
  4. Réponses: 3
    Dernier message: 07/08/2006, 10h01
  5. Réponses: 14
    Dernier message: 30/12/2005, 19h31

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