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 :

nombre de semaine dans l'année


Sujet :

Collection et Stream Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Points : 20
    Points
    20
    Par défaut nombre de semaine dans l'année
    Bonjour,
    Voila, j'aimerai savoir si il y a moyen de dire ou de recuperer le nombre de semaine qu'il y a dans une année.

    Je sais que l'on peut récuperer le nombre de semaine dans l'année en cours (avec , il me semble, WEEK_OF_YEAR , ou quelque chose commme ça!),mais moi ce que je veux est différent, je voudrai seulement que si l'utilisateur rentre une valeur comme : 2006 (ou autre) je récupére le nombre de semaine.

    Donc je ne sais pas si cela est périodique, j'ai cherché sur le net et j'ai trouvé qu'il ya 52 ou 53 semaine dans une année suivant si le jour de l'an est un jeudi (ou autre lors des années bisextile), il me semble que cela revient a ce qu'il y ait 53 semaine tout les 6 ans mais je n'en suis vraiment pas sûr et je ne trouve pas de réponse concrétes.

    Donc si quelqu'un a déja été confronté a ce probléme merci de me le signaler et de m'apporter des info la dessus afin que je puisse réaliser mon algorithme qui servira pour mon programme.
    et @+

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Points : 20
    Points
    20
    Par défaut
    Si ça vous interresse j'ai besoin de ça car je crée des onglets avec pour titre un String du style 2004, 2008 ou autre et j'aimerai crée d'autre onglets a l'intérieur représentant le nombre de semaine pour cette année.

    Il faut savoir que mm si nous sommes en 2006, l'utilisateur peut tout de mm "créer" une nouvelle année (2008 par exple) et il faudra que le nombre de semaine pour l'année choisit corresponde bien a l'année choisit (ici 2008) et pas au nombre de semaine de l'année en cours (ici 2006)

    J'éspére que je me suis bien exprimé et que vous avez compris, c'était pas évident ....

  3. #3
    Membre habitué Avatar de White Rabbit
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 122
    Points : 148
    Points
    148
    Par défaut
    Comment fais-tu pour compter 53 semaines dans une année ?

  4. #4
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    En version très bourrine

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public int getNumberOfWeeksInYear(String year) {
     
      SimpleDateFormat sdf = new SimpleDateFormat("dd/mm/yyyy");
      String dateString = new StringBuffer().append("31/12/").apped(year).toString();
      Date d = sdf.parse(dateString);
      GregorianCalendar gc = new GregorianCalendar(Locale.FRANCE);
      gc.setTime(d);
      return gc.get(GregorianCalendar.WEEK_OF_YEAR);
    }
    Comme ça tu as le numéro de la dernière semaine de l'année donc le nombre de semaines dans l'année
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  5. #5
    Invité
    Invité(e)
    Par défaut
    C'est peut-être une question bête mais y'a pas toujours 52 semaines dans une année ?

  6. #6
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Si tu multiplies 52 par 7 tu obtiens 364, ce qui est un peu en dessous de 365 si je ne m'abuse, ne parlons pas de 366
    Par contre il est sur qu'il n'y a que 52 semaines complètes
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Certes mais prenons cette année :
    La première semaine commencait le 2 janvier et la dernière (coup de bol) finit le 31 décembre. L'anné prochaine, la première semaine commecera le 1er janvier et finira le 30 décembre.
    Bref la première semaine peut commecer alors que l'année est entamée et la dernière finir alors que l'année n'est pas terminée.
    Il me semble que le nombre est toujours 52...

  8. #8
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Sauf q'il y a un bout de semaine sur le 1er janvier, comment faut'il considérer ce jour, comme hors semaine?

    Euh par contre je viens de me rendre compte que mon code ne marche absolument pas, il me ressort la même valeur que WEEK_OF_MONTH. Pourtant dans la doc y'a bien marqué

    Citation Envoyé par javadoc
    Field number for get and set indicating the week number within the current year.
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  9. #9
    Invité
    Invité(e)
    Par défaut
    non en fait au niveau civil j'entends bien, il est compté dans la dernière semaine de l'année dernière

  10. #10
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Dans ce cas ça reporte le problème sur l'année précédente, je sens le genre de débat qui va finir dans la taverne
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  11. #11
    Invité
    Invité(e)
    Par défaut
    Ouais en fait, si je dis pas de bêtise, on pourraît avoir des cas où le premier jour de la première semaine de l'année est un 6 janvier au pire... Et le dernier jour un 25 décembre. Mais après c'est juste ce qu'il me semble avoir compris (j'ai eu besoin de ca pour une appli pour mon stage et c'est le respo de l'entreprise qui m'a dit ca...)

    EDIT : bref il me semble qu'on boucle, modulo 7

  12. #12
    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,


    Il peut en effet y avoir des années de 53 semaines. C'était par exemple le cas en 2004, où la première semaine de l'année commencait le 29 décembre de l'année précédente, comme on peut le voir ici : http://kalender-365.de/calendrier.php?yy=2004


    La solution de sinok est presque bonne, sauf qu'elle renvoit "1" dans de nombreux cas (et qu'il faut utiliser MM pour le mois -- mm c'est pour les minutes ), puisque parfois le 31 décembre est dans la première semaine de l'année suivante...


    Sinon pour une meilleure portabilité, j'utiliserai Calendar.getInstance() et une Locale (puisque le nombre de semaine peut dépendre du mode de calcul de chaque pays), ce qui pourrait donner :

    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
        public static int getNumberOfWeeksInYear(Locale locale, int year) {
            // On crée un Calendar qu'on initialise à la Date souhaité :
            Calendar cal = Calendar.getInstance(locale);
            cal.clear(); // on efface tous les champs
            // Et on se positionne le 31 décembre de l'année :
            cal.set(year, Calendar.DECEMBER, 31);
     
            // On récupère le numéro de la semaine du jour
            int numSemaine = cal.get(Calendar.WEEK_OF_YEAR);
            // Et tant que celui-ci est inférieur ou égal à 1
            while (numSemaine <= 1) {
                // On enlève un jour :
                cal.add(Calendar.DATE, -1);
                // Et on récupère a nouveau le numéro de la semaine :
                numSemaine = cal.get(Calendar.WEEK_OF_YEAR);
            }
            return numSemaine;
        }
    Les résultats ont l'air de correspondre à ceux du site...

    a++

  13. #13
    Invité
    Invité(e)
    Par défaut
    Au temps pour moi...
    Voilà qui clarifie la situation...

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Points : 20
    Points
    20
    Par défaut
    et a tous merci déja de vous être intéréssé a ce sujet...
    Je vais donc tester les solutions proposé et voir si cela correspond a ce que je veux faire pour mo, apli.

    Il est vrai que moi aussi j'ai eue du mal a comprendre le nombre de semaine, en fait comme d'autre l'on déja précisé si il y a 53 semaine dans l'année la première et la dernière semaine de l'année ne sont pas compléte.

    Sinon pour mon apli si je ne trouve pas de solution, comme c'est pour une sorte de carnet de rendez-vous je créerai 53 semaine pour toutes les années et si la derniére semaine n'existe pas alors l'utilisateur ne rentrera donc pas de rendez-vous (bon c'est pas beau et si l'utilisateur est étourdi ça irapas... )

    Bon je vous tient au jus et dés que j'ai la solution
    Allez @+ et merci

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Points : 20
    Points
    20
    Par défaut
    Petite question dans la solution de Adiguba "year" représente le numéro de l'année mais est ce que je peut entrer ce que je veux comme numéro d'année ou est ce que cela représente l'année en cours (de windows par exple)?

    Si oui je peut donc mettre n'importe qu'elle année et pas seulement celle en cour?

    d'avance!!!


  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Points : 20
    Points
    20
    Par défaut
    Houla je suis un peu perdu
    Je ne comprend pas ce que represente "Locale" dans le code de Adiguba, ne serait-ce pas plutôt ça qui représente l'année que je choisit pour caluculer le nombre de semaine
    Merci

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Points : 20
    Points
    20
    Par défaut
    Bon apparament Locale , au vue du code de SINOK représente le pays dans lequel on se trouve, le rajouter en paramétre n'est donc u'une option afin de pouvoir modifier suivant le pays dans lequel on se trouve...
    Déja un point d'éclaicit

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Points : 20
    Points
    20
    Par défaut
    Bon oki merci, grace au code de Adiguna , je récupére donc bien le nombre de semaine dans l'année choisie et non dans l'année en cour, merci beaucoup a tous.

    J'éspére que cette discussion servira aussi à d'autre qui se sont un jour casser la tête avec le nombre de semaine dans l'annéé.

    Grâce a cette fonction on peut aussi prévoir combien de semaine il y aura dans une année donnée...

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 27
    Points : 12
    Points
    12
    Par défaut
    la 1ère semaine de l'année est la semaine du 1er jeudi de l'année

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

Discussions similaires

  1. Nombre de jours dans l'année
    Par Benjamin.Dohogne dans le forum Excel
    Réponses: 22
    Dernier message: 30/04/2020, 14h27
  2. [Dates] Nombre de semaines dans le mois
    Par Prosis dans le forum Langage
    Réponses: 7
    Dernier message: 05/03/2016, 11h10
  3. Nombre de jour dans l'année
    Par aureliegro dans le forum Cognos
    Réponses: 1
    Dernier message: 03/05/2008, 01h01
  4. nombre de semaines dans un mois ?
    Par isachat666 dans le forum Langage
    Réponses: 12
    Dernier message: 06/08/2007, 19h46
  5. Nbre de semaine dans une année
    Par kickoune dans le forum Excel
    Réponses: 21
    Dernier message: 07/06/2007, 12h04

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