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 :

Récupérer la date du lundi de la semaine courante


Sujet :

Langage PHP

  1. #1
    Membre habitué Avatar de omar24
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 159
    Points : 172
    Points
    172
    Par défaut Récupérer la date du lundi de la semaine courante
    Salut tout le monde;

    Je suis en train de développer une sorte de calendrier en PHP(mais pas exactement un calendrier ). Mon problème c'est que à partir de la date d'aujourd'hui je veux obtenir la date de chaque jour de la semaine courante:lundi,mardi,...dimanche.
    J'attends votre aide.
    Merci

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    retourne le timestamp du lundi en cours
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti Avatar de Pymento
    Homme Profil pro
    Ingé. Info.
    Inscrit en
    Janvier 2008
    Messages
    366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingé. Info.

    Informations forums :
    Inscription : Janvier 2008
    Messages : 366
    Points : 329
    Points
    329
    Par défaut
    Salut, tout dépend comment tu conçoit ton appli. Avec une base de donnée ou non ect...

    sinon il faut simplement incrémenter ta date d'aujourd'hui, soit avec une fonction de date, il doit y avoir ça, soit avec un split() puis un cast int() un ++ et un concat, mais c'est très sale ^^
    J'ai développer un agenda/calendrier en php, je m'en suis pas trop mal sorti, n'hésite pas à apporter plus de précisions pour que je puisse vraiment t'aider !
    Memento Quia Pulvis Es, Et In Pulverem ReverteriS

  4. #4
    Membre habitué Avatar de omar24
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 159
    Points : 172
    Points
    172
    Par défaut
    merci pour vos réponses rapide
    voila solution que j'adopte :

    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
    <?php
    function get_lundi_dimanche_from_week($week,$year)
    {
    if(strftime("%W",mktime(0,0,0,01,01,$year))==1)
      $mon_mktime = mktime(0,0,0,01,(01+(($week-1)*7)),$year);
    else
      $mon_mktime = mktime(0,0,0,01,(01+(($week)*7)),$year);
     
    if(date("w",$mon_mktime)>1)
      $decalage = ((date("w",$mon_mktime)-1)*60*60*24);
     
    $lundi = $mon_mktime - $decalage;
        $dimanche = $lundi + (6*60*60*24);
     
        return array(date("D - d/m/Y",$lundi),date("D - d/m/Y",$dimanche));
    }
     
    $tmp = get_lundi_dimanche_from_week(date('W'),date('Y'));
    print $tmp[0]."<BR>"; // date du lundi
    print $tmp[1]."<BR>"; // date du mardi
    ?>

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par omar24 Voir le message
    merci pour vos réponses rapide
    voila solution que j'adopte :

    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
    <?php
    function get_lundi_dimanche_from_week($week,$year)
    {
    if(strftime("%W",mktime(0,0,0,01,01,$year))==1)
      $mon_mktime = mktime(0,0,0,01,(01+(($week-1)*7)),$year);
    else
      $mon_mktime = mktime(0,0,0,01,(01+(($week)*7)),$year);
     
    if(date("w",$mon_mktime)>1)
      $decalage = ((date("w",$mon_mktime)-1)*60*60*24);
     
    $lundi = $mon_mktime - $decalage;
        $dimanche = $lundi + (6*60*60*24);
     
        return array(date("D - d/m/Y",$lundi),date("D - d/m/Y",$dimanche));
    }
     
    $tmp = get_lundi_dimanche_from_week(date('W'),date('Y'));
    print $tmp[0]."<BR>"; // date du lundi
    print $tmp[1]."<BR>"; // date du mardi
    ?>
    bravo tu t'es bien embêter, pourquoi ne pas avoir faire avec strtotime comme grunk t'as dis ??? surtout que le code est faux puisque avec les décalage horaire ca ne marche pas..I

  6. #6
    Membre habitué Avatar de omar24
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 159
    Points : 172
    Points
    172
    Par défaut
    pourquoi est il faut?je le teste chez moi et il me donne exactement ce que je vise, voudriez bien m'expliquer je ne veux pas tomber dans des problèmes parés le déploient de la solution.merci

  7. #7
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Avec strtotime c'est tout de suite moins compliqué :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function get_lundi_dimanche_from_week($week,$year) {
    		$week = sprintf('%02d',$week);
    		$start = strtotime($year.'W'.$week);
    		return array(strtotime('Monday',$start),strtotime('Sunday',$start));
    	}
    A tester mais ça devrais marcher
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par omar24 Voir le message
    pourquoi est il faut?je le teste chez moi et il me donne exactement ce que je vise, voudriez bien m'expliquer je ne veux pas tomber dans des problèmes parés le déploient de la solution.merci
    parce que une journée c'est pas forcement 24h, comme je l'ai dis a cause du décalage horaire, ducoup ca peux être 23h ou 25h donc le calcule est faux, utilise strtotime comme on t'as dis

    C'est expliqué par exemple dans les tutoriels et cours de programmation de formation à PHP : http://php.developpez.com/cours/

  9. #9
    Membre habitué Avatar de omar24
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 159
    Points : 172
    Points
    172
    Par défaut
    ok je comprends maintenant merci pour vos réponses

  10. #10
    Candidat au Club
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2009
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Hello,

    pour obtenir le timestamp du premier lundi précédent d'un timestamp, je l'avais fait en utilisant la valeur du jour de la semaine date('w').

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function getLundiPrecedent($TimeStampActuel){
      if (date('w',$TimeStampActuel)=='0'){$joursAsoustraire=6;} else {$joursAsoustraire=date('w',$TimeStampActuel) -1;}
      return mktime (0, 0, 0, date("n",$TimeStampActuel) , date("j", $TimeStampActuel) - $joursAsoustraire, date("Y", $TimeStampActuel));
    }
     
    //quelques tests
    echo "le lundi qui se trouve avant le dimanche 24 juin 2012: ".date('Y-m-d', getLundiPrecedent(mktime(0,0,0,6,24,2012)))."<br />";
    echo "le lundi qui se trouve avant le  lundi 25 juin 2012: ".date('Y-m-d', getLundiPrecedent(mktime(0,0,0,6,25,2012)))."<br />";
    echo "le lundi qui se trouve avant le samedi 23 juin 2012: ".date('Y-m-d', getLundiPrecedent(mktime(0,0,0,6,23,2012)))."<br />";
    ce qui retourne:

    le lundi qui se trouve avant le dimanche 24 juin 2012: 2012-06-18
    le lundi qui se trouve avant le lundi 25 juin 2012: 2012-06-25
    le lundi qui se trouve avant le samedi 23 juin 2012: 2012-06-18

  11. #11
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par gnieark Voir le message
    Hello,

    pour obtenir le timestamp du premier lundi précédent d'un timestamp, je l'avais fait en utilisant la valeur du jour de la semaine date('w').

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function getLundiPrecedent($TimeStampActuel){
      if (date('w',$TimeStampActuel)=='0'){$joursAsoustraire=6;} else {$joursAsoustraire=date('w',$TimeStampActuel) -1;}
      return mktime (0, 0, 0, date("n",$TimeStampActuel) , date("j", $TimeStampActuel) - $joursAsoustraire, date("Y", $TimeStampActuel));
    }
     
    //quelques tests
    echo "le lundi qui se trouve avant le dimanche 24 juin 2012: ".date('Y-m-d', getLundiPrecedent(mktime(0,0,0,6,24,2012)))."<br />";
    echo "le lundi qui se trouve avant le  lundi 25 juin 2012: ".date('Y-m-d', getLundiPrecedent(mktime(0,0,0,6,25,2012)))."<br />";
    echo "le lundi qui se trouve avant le samedi 23 juin 2012: ".date('Y-m-d', getLundiPrecedent(mktime(0,0,0,6,23,2012)))."<br />";
    ce qui retourne:

    le lundi qui se trouve avant le dimanche 24 juin 2012: 2012-06-18
    le lundi qui se trouve avant le lundi 25 juin 2012: 2012-06-25
    le lundi qui se trouve avant le samedi 23 juin 2012: 2012-06-18
    bof, et sans doute faux par rapport au changement d'heure, donc direct
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo date('Y-m-d', strtotime('last monday', strtotime('24-6-2012')));

  12. #12
    Membre éclairé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 392
    Points : 863
    Points
    863
    Par défaut
    bonjour,
    je tombe sur ce message de 2011 avec des calculs avec semaine....
    maintenant (en 2022), php permet d'obtenir le lundi passé, prochain, courant de la semaine . plus besoin de "se prendre la tête avec les calculs) i lsuffit de jongler avec les parametres ordinal et RelText

    https://www.php.net/manual/en/dateti...s.relative.php

    ordinal 'first' | 'second' | 'third' | 'fourth' | 'fifth' | 'sixth' | 'seventh' | 'eighth' | 'ninth' | 'tenth' | 'eleventh' | 'twelfth' | 'next' | 'last' | 'previous' | 'this'
    reltext 'next' | 'last' | 'previous' | 'this'
    Ces choses là sont bien pratique et simplifient grandement le code

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 07/09/2010, 20h57
  2. récupérer la date du lundi et du vendredi
    Par ballantine's dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 08/01/2010, 14h58
  3. Réponses: 1
    Dernier message: 06/11/2009, 13h52
  4. [Date] Le lundi de la semaine suivante.
    Par SONY30 dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 06/11/2007, 09h26
  5. Date de Lundi de la semaine courante
    Par bonano dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 29/03/2007, 08h41

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