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 :

[Calendar] Problème de décalage du numéro de semaine


Sujet :

Collection et Stream Java

  1. #1
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut [Calendar] Problème de décalage du numéro de semaine
    Bonjour à tous,

    Je m'en remets aux avis des experts Java de ce forum pour un problème que je rencontre lors de la récupération du numéro de semaine.

    J'utilise le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Calendar c1 = Calendar.getInstance();
    c1.setMinimalDaysInFirstWeek(4);
    c1.setFirstDayOfWeek(java.util.Calendar.MONDAY);
    System.out.println("Semaine " + (c1.get(Calendar.WEEK_OF_YEAR)));
    Pour info cette semaine nous sommes la semaine #28.

    Lorsque je lance ce code sur mon poste sous Win 2000 Pro, j'ai bien "Semaine 28" qui s'affiche. Mais le problème se pose lorsque le code est lancé sur une machine tournant sous Win 2000 Server, il s'affiche "Semaine 29".

    Je ne vois vraiment pas d'où peut venir le problème, si quelqu'un pouvait éclairer ma lanterne ça serait formidable. Merci.
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Quelles sont les Locales des deux systèmes (que renvoit Locale.getDefault()) ?
    Quel version de la JVM ?

    a++

  3. #3
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Merci pour ton aide.

    J'ai récupéré les infos demandées, et j'en ai profité pour faire un test fort étrange (enfin je trouve).
    Voici le code dudit test :

    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
    Calendar c1 = Calendar.getInstance();
    c1.setMinimalDaysInFirstWeek(4);
    c1.setFirstDayOfWeek(java.util.Calendar.MONDAY);
    System.out.println("Semaine " + (c1.get(Calendar.WEEK_OF_YEAR)));
     
    System.out.println("LOCALE : " + Locale.getDefault());
    String version = System.getProperty("java.vm.version");
    System.out.println("JVM : " + version);
     
    Calendar c = Calendar.getInstance();
    c.setMinimalDaysInFirstWeek(4);
    c.setFirstDayOfWeek(java.util.Calendar.MONDAY);
    System.out.println("Semaine " + (c.get(Calendar.WEEK_OF_YEAR)));
    c.add(Calendar.WEEK_OF_YEAR, -1);
    System.out.println("Semaine " + (c.get(Calendar.WEEK_OF_YEAR)));
    J'ai deux Calendar, je ne touche pas au premier, et j'enlève une semaine au second (enfin c'est ce que je crois faire).

    Voilà le résultat :

    Sur le Windows 2000 Pro (en français) :
    Semaine 28
    LOCALE : fr_FR
    JVM : 1.4.2_07-b05
    Semaine 28
    Semaine 27
    Sur le Windows 2000 Server (en anglais) :
    Semaine 29
    LOCALE : fr_FR
    JVM : 1.4.0-b92
    Semaine 29
    Semaine 27
    Je ne comprends plus rien, sur le Pro il enlève bien une semaine, et sur le Server la première ligne semble farfelue (29) et lorsqu'il y a une semaine d'enlevée il y en a 2 en fait

    J'ai dû faire une erreur toute bête mais je vois pas...

    Merci.


    Edit : en remplaçant c.add(Calendar.WEEK_OF_YEAR, -1); par c.add(Calendar.DATE, -7); le résultat est identique.
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  4. #4
    Membre habitué
    Inscrit en
    Juillet 2004
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 152
    Points : 173
    Points
    173
    Par défaut
    http://bugs.sun.com/bugdatabase/view...bug_id=4546637

    Ce n'est pas exactement le meme probleme, mais ca y ressemble fort...
    Tu devrais peut être mettre à jour la JVM de ton serveur

  5. #5
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Citation Envoyé par dude
    http://bugs.sun.com/bugdatabase/view...bug_id=4546637

    Ce n'est pas exactement le meme probleme, mais ca y ressemble fort...
    Tu devrais peut être mettre à jour la JVM de ton serveur
    Merci beaucoup, en effet ça ressemble très fort à mon problème, et ça correspond aux JVM que j'ai (1.4.2 sur le Pro, 1.4.0 sur le Server, le problème étant résolu sur la 1.4.1 apparament), le problème c'est que j'ai pas forcément la main sur le Server donc je vais voir ça. Je vais probablement devoir recopier le bout de code fourni sur le lien Merci
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  6. #6
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par JWhite
    Merci beaucoup, en effet ça ressemble très fort à mon problème, et ça correspond aux JVM que j'ai (1.4.2 sur le Pro, 1.4.0 sur le Server, le problème étant résolu sur la 1.4.1 apparament), le problème c'est que j'ai pas forcément la main sur le Server donc je vais voir ça. Merci
    Et celui là également : http://bugs.sun.com/bugdatabase/view...bug_id=4623997

    Apparemment avec les JRE < 1.4.1, les champs WEEK_OF_YEAR et WEEK_OF_MONTH ne sont pas recalculé lorsque l'on utilise setFirstDayOfWeek() et/ou setMinimalDaysInFirstWeek()...

    D'après les commentaires tu peux forcer le recalcul de ces champs en les "invalidants" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            c1.setMinimalDaysInFirstWeek(4);
            c1.setFirstDayOfWeek(java.util.Calendar.MONDAY);
            c1.clear(Calendar.WEEK_OF_YEAR);
    a++

  7. #7
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Yes, merci beaucoup adiGuba, grâce à ta ligne de code magique avec le clear le problème est résolu sans changer la JVM du Server, j'avais bien vu la page de bug mais pas l'astuce pour le résoudre, merci.

    Bonne journée.
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

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

Discussions similaires

  1. Afficher numéro de semaine d'un jour via Calendar
    Par sisiniya dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 24/03/2012, 23h59
  2. Problème de décalage horaire avec un Calendar
    Par flexx dans le forum Général Java
    Réponses: 7
    Dernier message: 12/12/2011, 12h49
  3. Numéro de semaine erroné avec Calendar
    Par peofofo dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 08/08/2011, 08h25
  4. [Calendar] Problème de numéro de semaine de l'année
    Par gaia_dev dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 29/11/2004, 11h44
  5. Calcul des numéros de semaine d'un calendrier
    Par Invité dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 06/11/2002, 21h29

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