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] Obtenir la date de début et de fin d'une semaine à partir d'un jour


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 22
    Points : 33
    Points
    33
    Par défaut [Dates] Obtenir la date de début et de fin d'une semaine à partir d'un jour
    Bonjour, je suis a la recherche d'une fonction qui me permettrai d'avoir la dates de début et de fin de semaine a partir d'un jour de cette même semaine.

    Exemple: 23/04/2008 je souhaite obtenir 21/04/2008 25/04/2008.

    J'ai déjà fait un petit script pour calculer en fonction du jour mais je suis bloquer quand il est question de semaine a cheval sur deux 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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    <?php
     
    if(!empty($_GET['jour']))
    	{
        $varjour = $_GET['jour'];
        }
    else
        {
        $varjour = date('j-n-Y');
        }
     
    $date = explode("-", $varjour);
     
    $time = strtotime($date[2].'-'.$date[1].'-'.$date[0]);
     
    $day = date("w", "$time");
     
     
    switch ($day) {
    	case "0":
    	$jourdeb = $date[0] - 6;
    	$jourfin = $date[0];
      break;
     
    	case "1":
    	$jourdeb = $date[0];
    	$jourfin = $date[0] +6;
      break;
     
    	case "2":
    	$jourdeb = $date[0] - 1;
    	$jourfin = $date[0] + 5;
      break;
     
    	case "3":
    	$jourdeb = $date[0] - 2;
    	$jourfin = $date[0] + 4;
      break;
     
    	case "4":
    	$jourdeb = $date[0] - 3;
    	$jourfin = $date[0] + 3;
      break;
     
    	case "5":
    	$jourdeb = $date[0] - 4;
    	$jourfin = $date[0] + 2;
      break;
     
    	case "6":
    	$jourdeb = $date[0] - 5;
    	$jourfin = $date[0] + 1;
      break;
    }
     
     
    echo $jourdeb.'/'.$date[1].'-'.$jourfin.'/'.$date[1];
     
    ?>
    Si vous avez des conseils sur ce code ou une fonction qui fait ce que je cherche je vous écoute

    Merci.

  2. #2
    Membre éprouvé Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Points : 952
    Points
    952
    Par défaut
    Ta question me fait penser à un sujet évoqué il y a quelques mois.

    Tu y trouvera surement une source d'inspiration

    http://www.developpez.net/forums/sho...d.php?t=320057

  3. #3
    Membre averti Avatar de mdr_cedrick
    Profil pro
    Développeur multimédia
    Inscrit en
    Janvier 2008
    Messages
    374
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Janvier 2008
    Messages : 374
    Points : 336
    Points
    336
    Par défaut
    ce qu'il faut faire quand tu connais le nombre de jour à enlever ou à rajouter (comme tu l'a fait), c'est réutiliser mktime du genre
    mktime (0, 0, 0, $mois, $day (+/-) ton nb de jours, $annee);

    et de cette manière si une semaine est à cheval entre deux mois tu n'es pas handicapé, cela se calcul tout seul

    bon courage

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 22
    Points : 33
    Points
    33
    Par défaut
    Merci a vous deux

    Voici le code fonctionnel:

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    <?php
     
     
    if(!empty($_GET['jour']))
    	{
        $varjour = $_GET['jour'];
        }
    else
        {
        $varjour = date('j-n-Y');
        }
     
    $date = explode("-", $varjour);
     
    $time = strtotime($date[2].'-'.$date[1].'-'.$date[0]);
     
    $day = date("w", "$time");
     
     
    switch ($day) {
    	case "0":
    	$jourdeb = mktime(0,0,0,$date[1],$date[0]-6,$date[2]);
    	$jourfin = mktime(0,0,0,$date[1],$date[0],$date[2]);
      break;
     
    	case "1":
    	$jourdeb = mktime(0,0,0,$date[1],$date[0],$date[2]);
    	$jourfin = mktime(0,0,0,$date[1],$date[0]+6,$date[2]);
      break;
     
    	case "2":
    	$jourdeb = mktime(0,0,0,$date[1],$date[0]-1,$date[2]);
    	$jourfin = mktime(0,0,0,$date[1],$date[0]+5,$date[2]);
      break;
     
    	case "3":
    	$jourdeb = mktime(0,0,0,$date[1],$date[0]-2,$date[2]);
    	$jourfin = mktime(0,0,0,$date[1],$date[0]+4,$date[2]);
      break;
     
    	case "4":
    	$jourdeb = mktime(0,0,0,$date[1],$date[0]-3,$date[2]);
    	$jourfin = mktime(0,0,0,$date[1],$date[0]+3,$date[2]);
      break;
     
    	case "5":
    	$jourdeb = mktime(0,0,0,$date[1],$date[0]-4,$date[2]);
    	$jourfin = mktime(0,0,0,$date[1],$date[0]+2,$date[2]);
      break;
     
    	case "6":
    	$jourdeb = mktime(0,0,0,$date[1],$date[0]-5,$date[2]);
    	$jourfin = mktime(0,0,0,$date[1],$date[0]+1,$date[2]);
      break;
    }
     
     
    echo date('j/n/Y',$jourdeb).'-'.date('j/n/Y',$jourfin);
    ?>
    @FCYPBA: Ton script n'a pas l'air de fonctionné pour 2008 :s mais il m'a été utiles pour avoir un exemple sur les mktime que m'a recommander mdr_cedrick.

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

Discussions similaires

  1. [Dates] Obtenir la date de demain en toutes lettres
    Par lunick dans le forum Langage
    Réponses: 15
    Dernier message: 23/07/2007, 17h39
  2. Réponses: 6
    Dernier message: 11/04/2007, 16h54
  3. Réponses: 14
    Dernier message: 01/06/2006, 17h32
  4. Réponses: 1
    Dernier message: 12/01/2006, 00h22
  5. Réponses: 2
    Dernier message: 17/12/2005, 20h56

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