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] Convertir un numéro de semaine en date [Sources]


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 11
    Points : 8
    Points
    8
    Par défaut [Dates] Convertir un numéro de semaine en date
    Bonjour,

    Pour un script je cherche à convertir un numero de semaine en date de premier jour de cette semaine.

    J'ai deja trouver une solution mais elle n'est pas super pratique... car le jour de la premier semaine de l'année est different pour chaque année!

    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $timestamp = strtotime('1 January 2006');
    $semaine = "20 week";
     
    date('d M',strtotime($semaine,$timestamp))
    Avec ceci j'obtiens le premier jour de la semaine 19 (bon c'est pas bien grave mais je comprends pas trop)

    Voyez vous une meilleur solution?

    Merci par avance

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Points : 1 093
    Points
    1 093
    Par défaut
    et cela ne va pas te faire plaisir, mais lorsqu'un début de semaine tombe un jeudi, selon le calendrier que tu as, c'est la semaine 53 de l'année précédente ou la semaine 1 de l'année en cours...

  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,

    En plus clair (on a rarement vu une semaine commencer un jeudi), et selon la norme ISO 8601 :
    • la semaine commence le lundi ;
    • la semaine N° 1 (exprimé de différentes manières mais équivalentes) est :
      • la première qui comporte au moins 4 jours de janvier,
      • celle dans laquelle se trouve le premier jeudi de janvier,
      • celle dans laquelle se trouve le 4 janvier.
    • la semaine 53 n'existe que périodiquement (tous les 5 à 6 ans), donc, si le 1er janvier est de vendredi à dimanche, il sera le plus souvent dans la semaine 52 de l'année précédente.


    Pour info, les années comportant 53 semaines depuis 1970 jusqu'en ... :
    • 1970
    • 1976
    • 1981
    • 1987
    • 1992
    • 1998
    • 2004
    • 2009
    • 2015
    • ...


    En fonction de cela, voici une manière de faire :
    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
     
    <?php
    	//-- les paramètres ------------
    	$numSemaine = 20;
    	$annee = 2006;
    	$timeStampPremierJanvier = strtotime($annee . '-01-01');
    	$jourPremierJanvier = date('w', $timeStampPremierJanvier);
     
    	//-- recherche du N° de semaine du 1er janvier -------------------
    	$numSemainePremierJanvier = date('W', $timeStampPremierJanvier);
     
    	//-- nombre à ajouter en fonction du numéro précédent ------------
    	$decallage = ($numSemainePremierJanvier == 1) ? $numSemaine - 1 : $numSemaine;
    	//-- timestamp du jour dans la semaine recherchée ----------------
    	$timeStampDate = strtotime('+' . $decallage . ' weeks', $timeStampPremierJanvier);
    	//-- recherche du lundi de la semaine en fonction de la ligne précédente ---------
    	$jourDebutSemaine = ($jourPremierJanvier == 1) ? date('d-m-Y', $timeStampDate) : date('d-m-Y', strtotime('last monday', $timeStampDate));
     
    	echo "Le premier jour de la semaine N° $numSemaine est  le $jourDebutSemaine<br>";
    ?>

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Points : 1 093
    Points
    1 093
    Par défaut
    oui bien sûr y a erreur de frappe
    je voulais dire lorsque l'année commence le jeudi
    je suppose que tout le monde a corrigé

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 38
    Points : 24
    Points
    24
    Par défaut
    ce sujet date un peu mais je voulais juste remercier jeca car son code ma bien aidé

Discussions similaires

  1. [XL-2003] Comment convertir un n° de semaine en Date
    Par MichaSarah dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/06/2010, 18h55
  2. Conversion numéro de semaine en date
    Par soleilgym64 dans le forum VBA Access
    Réponses: 6
    Dernier message: 01/10/2009, 15h22
  3. Numéro de semaine, module Date::Calc
    Par djezair31 dans le forum Langage
    Réponses: 1
    Dernier message: 22/12/2008, 14h13
  4. Réponses: 2
    Dernier message: 16/11/2007, 16h30
  5. numéro de semaine et date
    Par Mathieu.Nanoux dans le forum C#
    Réponses: 9
    Dernier message: 24/09/2007, 17h30

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