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] WEEK_OF_YEAR faux ?


Sujet :

Collection et Stream Java

  1. #1
    Membre confirmé Avatar de Original Prankster
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 226
    Par défaut [Calendar] WEEK_OF_YEAR faux ?
    Hello

    J'ai apparemment un soucis avec WEEK_OF_YEAR de GregorianCalendar. Mon code est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    GregorianCalendar calendar = new GregorianCalendar();
    int weekreal = calendar.get(java.util.GregorianCalendar.WEEK_OF_YEAR);
    Cependant la valeur qui m'est retournée est 37, alors que j'ai vérifié et nous sommes en semaine 36 actuellement.

    Quelle explication à cela ? Dois-je soustraire 1 à la valeur qui m'est retournée pour être en accord avec le calendrier ?

    Merci

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 220
    Par défaut
    Ca depend, comment tu comptes ?

    Dans la doc sur GregorianCalendar, il y a ca :

    Values calculated for the WEEK_OF_YEAR field range from 1 to 53. Week 1 for a year is the earliest seven day period starting on getFirstDayOfWeek() that contains at least getMinimalDaysInFirstWeek() days from that year. It thus depends on the values of getMinimalDaysInFirstWeek(), getFirstDayOfWeek(), and the day of the week of January 1. Weeks between week 1 of one year and week 1 of the following year are numbered sequentially from 2 to 52 or 53 (as needed).
    Donc ca depend en fonction de quel jour l'année commence, si je me trompe pas... Du coup, ca PEUT te decaler d'une semaine en fonction des années...

  3. #3
    Membre confirmé Avatar de Original Prankster
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 226
    Par défaut
    Ok bien vu, je vois l'idée, mais par contre j'avoue que je me suis un peu embrouillé, là... Je dois faire quoi ??

  4. #4
    Membre Expert
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Par défaut
    Il faut relire JavaDoc concernant la classe Calendar et GregorianCalendar.

    La définition de la première semaine de l'année est variable en fonction de la culture d'un pays.

    Par exemple: le premier jour de la semaine est le lundi en Europe mais c'est le dimanche aux USA.

    Il faut que tu contrôles la "localité" de ta machine et la fixer dans ton programme.

  5. #5
    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
    Par défaut
    et jette un oeil sur cette methode ;-)
    http://java.sun.com/j2se/1.4.2/docs/...FirstWeek(int)

  6. #6
    Membre confirmé Avatar de Original Prankster
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 226
    Par défaut
    Citation Envoyé par lunatix
    et jette un oeil sur cette methode ;-)
    http://java.sun.com/j2se/1.4.2/docs/...FirstWeek(int)
    OK, je veux respecter le calendrier, donc j'ai positionné cette valeur à 4, ce qui représente la plus grosse moitié d'une semaine. La valeur par défaut était à combien ?

    Citation Envoyé par jowo
    Il faut que tu contrôles la "localité" de ta machine et la fixer dans ton programme.
    Très bien, voici le résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    GregorianCalendar calendar = new GregorianCalendar(Locale.FRANCE);
    calendar.setMinimalDaysInFirstWeek(4);
    int weekreal = calendar.get(java.util.GregorianCalendar.WEEK_OF_YEAR);
    Et j'ai bien la semaine 36 en ce jour du 7 septembre de l'an de grâce 2005... Je pense donc que ce problème est résolu. Merci d'être intervenu.

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

Discussions similaires

  1. Calendar de java ME et WEEK_OF_YEAR
    Par mavina dans le forum Java ME
    Réponses: 2
    Dernier message: 18/03/2008, 08h37
  2. Calendar WEEK_OF_YEAR DaY
    Par devAd dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 13/03/2007, 11h58
  3. Réponses: 5
    Dernier message: 18/02/2004, 17h51
  4. Vrai/Faux
    Par jfox dans le forum Débuter
    Réponses: 5
    Dernier message: 23/09/2003, 09h04

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