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 PHP Discussion :

[Dates] retrouver un mois à partir d'un numéro de semaine en php


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 33
    Points : 36
    Points
    36
    Par défaut [Dates] retrouver un mois à partir d'un numéro de semaine en php
    Bonjour,

    Je voudrais retrouver le mois correspondant à un numéro de semaine

    par exemple je passerai en parametre la semaine "06" et cela devrait me renvoyer février en l'occurence 02.

    merci d'avance pour votre aide

  2. #2
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    salut
    en semaine je ne sais pas trop
    mais tu peux le faire avec les jours, ainsi convertir ton nombre de semaines en jours
    ex:
    6e semaines = 5*7+1 donc début à la 36e journée de l'année
    de là, la fonction te retourne la date tu n'a qu'a prendre ce que tu veux comme information..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $semaine = 6;
    $nbreJour = $semaine*7+1; //le nombre a ajouter;
     
    $dansXjours = date("d/m/Y", mktime(0, 0, 0, date("m"), date("d")+$nbreJours,  date("Y")));
     
    $arrayDate = explode("/",$dansXjours);
     
    $arrayDate[0] //Jour
    $arrayDate[1] //Mois
    $arrayDate[2] //Année
    En espérant que ca t'ais aidé
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Bonjour,

    Le code proposé ci-dessus ne peut pas fonctionner :
    1. il présume que le 1er janvier se trouve dans la semaine N° 1, ce qui est vrai pour 2007, mais, par exemple, ni pour 2006 (semaine 52) ou 2010 (semaine 53) ;
    2. les calculs sont effectués sur la date courante ;


    D'autre part, une semaine peut se trouver à cheval sur 2 mois.

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    <?php
    $annee = 2007;
    $semaine = 6;
     
    $nbJour = ($semaine - 1 ) * 7;
    $timeStampPremierJanvier = mktime(0, 0, 0, 1, 1, $annee);
     
    //-- détermine le N° de semaine du 1er janvier de l'année recherchée --------------
    $semainePremierJanvier = date('W', $timeStampPremierJanvier);
     
    //-- détermine le jour du 1er janvier de l'année recherchée -----------------------
    $jourPremierJanvier = date('d', $timeStampPremierJanvier);
     
    //-- détermine le lundi de la semaine N° 1 ----------------------------------------
    if ($semainePremierJanvier > 1)
    {
    	$lundiSemaineUn = date('d', strtotime('next Monday', $timeStampPremierJanvier));
    }
    elseif ($jourPremierJanvier > 1)
    {
    	$lundiSemaineUn = date('d', strtotime('last Monday', $timeStampPremierJanvier));
    }
    else
    {
    	$lundiSemaineUn = date('d', $timeStampPremierJanvier);
    }
     
    //-- détermine le lundi de la semaine recherchée ----------------------------------
    $debutSemaineCherche = date('Y-m-d', mktime(0, 0, 0, 1, $lundiSemaineUn + $nbJour, $annee));
    //-- détermine le dimanche de la semaine recherchée -------------------------------
    $finSemaineCherche = date('Y-m-d', strtotime('next Sunday', strtotime($debutSemaineCherche)));
     
    echo "la semaine <b>$semaine</b> de l'année <b>$annee</b> va du <b>$debutSemaineCherche</b> au <b>$finSemaineCherche</b><br />";
    ?>

  4. #4
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    Salut
    oui ton code est correct, mais bon est-ce la question ici, elle ne veux pas savoir de quel jours à quel jours, elle veut savoir la semaine 6 se trouve dans quelle mois
    une semaine commence du dimanche au samedi donc on recherche ici le dimanche se trouve dans quel mois...ben d'après ce que j'ai compris de la question en 3 ligne
    j'ai codé par rapport à cela, mais je ne comprends pas pk tu dis que mon code ne fonctionne pas..il fonctionne au contraire mais dépendant de la situation que tu l'utilises...
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Non, la semaine ne va pas du dimanche au samedi, mais du lundi au dimanche (norme ISO 8601).

    Et comme je l'ai dit plus haut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Le code proposé ci-dessus ne peut pas fonctionner :
     
       1. il présume que le 1er janvier se trouve dans la semaine N° 1, ce qui est vrai pour 2007, mais, par exemple, ni pour 2006 (semaine 52) ou 2010 (semaine 53) ;
       2. les calculs sont effectués sur la date courante ;
    Si je fais fonctionner ton code aujourd'hui, tel qu'il est proposé, pour la semaine N° 6, j'obtiens le 07-04-2007, ce qui est évidemment faux.

    Question :
    Dans quel mois se trouve la semaine N° 9 de 2007 ?
    Réponse :
    En février ET en mars, car elle va du 26-02 au 04-03-2007.

    Voilà pourquoi je donne la fourchette de dates. Après quoi, il ou elle en fait ce qu'il ou elle veut.

  6. #6
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    ouep tu a bien raison
    anyway mon code marche pas, j'ai adapté un code d'ajouter X jours à la date actuelle sans trop faire attention
    dsl pour l'incovénient

    En y retouchant un peu j'ai fixé les erreurs ben pour mon code la (qui fonctionne pour ma situation, pas la tienne.... )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $semaine = 6;
    $nbreJour = $semaine*7+1; //le nombre a ajouter;
     
    $dansXjours = date("d/m/y",mktime(0, 0, 0, 1, $nbreJour,  date("Y")));
     
    $arrayDate = explode("/",$dansXjours);
    /* 
    $arrayDate[0] //Jour
    $arrayDate[1] //Mois
    $arrayDate[2] //Année
    */
    echo "la semaine 6 tombe dans le mois ".$arrayDate[1];
    voilà c'est p-e un peu mieux
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  7. #7
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 33
    Points : 36
    Points
    36
    Par défaut
    merci beaucoup pour votre aide precieuse

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

Discussions similaires

  1. Trouver un mois à partir d'un numéro de semaine et de l'année
    Par patbeautifulday dans le forum Contribuez
    Réponses: 2
    Dernier message: 27/05/2015, 10h59
  2. Réponses: 15
    Dernier message: 24/04/2014, 09h58
  3. Récupérer la date à partir d'un numéro de semaine et de l'année
    Par aurelientp dans le forum Général Java
    Réponses: 4
    Dernier message: 11/01/2010, 13h43
  4. Réponses: 3
    Dernier message: 20/06/2007, 16h12
  5. [Date] Retrouver le mois avec le num de la semaine
    Par romano dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 08/02/2006, 20h31

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