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] Jour de l'an dernier


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de nimbus_77
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 109
    Points : 108
    Points
    108
    Par défaut [Dates] Jour de l'an dernier
    Bonjour,

    à fin de statistique j'ai besoin de définir la date précise du JOUR de la MEME semaine de l'an dernier ...

    En clair quelle est la date 'jj.mm.aaaa' du JEUDI de la semaine 11 de 2008.

    J'ai visité pas mal de fonction mais je ne trouve pas comment poser la question :
    "quel est le quantième du JEUDI de la SEMAINE(11) de l'an DERNIER"

    Merci de vos orientations,

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Bonjour,

    J'utilise cette fonction qui donne les dates composant une semaine :
    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
    	function week_dates($week,$year) {
    		$week_dates = array();
    		$week--;
    		// Get timestamp of first week of the year
    		$first_day = mktime(12,0,0,1,1,$year);
    		$first_week = date("W",$first_day);
    		if ($first_week != "01") {
    			$first_day = strtotime("+1 week",$first_day); // skip to next if year does not begin with week 1
    		}
    		// Get timestamp of the week
    		$timestamp = strtotime("+$week week",$first_day);
     
    		// Adjust to Monday of that week
    		$what_day = date("w",$timestamp); // I wanted to do "N" but only version 4.3.9 is installed :-(
    		if ($what_day==0) {
    			// actually Sunday, last day of the week. FIX;
    			$timestamp = strtotime("-6 days",$timestamp);
    		} elseif ($what_day > 1) {
    			$what_day--;
    			$timestamp = strtotime("-$what_day days",$timestamp);
    		}
    		$week_dates[0] = date("Y-m-d",$timestamp); // Monday
    		$week_dates[1] = date("Y-m-d",strtotime("+1 day",$timestamp)); // Tuesday
    		$week_dates[2] = date("Y-m-d",strtotime("+2 day",$timestamp)); // Wednesday
    		$week_dates[3] = date("Y-m-d",strtotime("+3 day",$timestamp)); // Thursday
    		$week_dates[4] = date("Y-m-d",strtotime("+4 day",$timestamp)); // Friday
    		$week_dates[5] = date("Y-m-d",strtotime("+5 day",$timestamp)); // Saturday
    		$week_dates[6] = date("Y-m-d",strtotime("+6 day",$timestamp)); // Sunday
     
    		return($week_dates);
    	}

  3. #3
    Membre régulier Avatar de nimbus_77
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 109
    Points : 108
    Points
    108
    Par défaut Réponse rapide et efficace ...
    Adapté à ma sauce j'obtiens exactement ce que je voulais :
    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
     
    require_once ("fonction.php");
     
    // adapté d'un ""Sabotage"" de developper.net le 12.03.2009 
        function an_moins() {
    $d     = Date('N');         // le jour par un nombre : 1 = Lundi
    $week = Date('W');      // le numero de la semaine 
    $a     = Date('Y');         // l'annee courante 
    $year = $a -1 ;            // l'annee d'AVANT        
            $week_dates = array();
            $week--;
            // Get timestamp of first week of the year
            $first_day = mktime(12,0,0,1,1,$year);
            $first_week = date("W",$first_day);
            if ($first_week != "01") {
                $first_day = strtotime("+1 week",$first_day); // skip to next if year does not begin with week 1
            }
            // Get timestamp of the week
            $timestamp = strtotime("+$week week",$first_day);
     
            // Adjust to Monday of that week
            $what_day = date("w",$timestamp); // I wanted to do "N" but only version 4.3.9 is installed :-(
            if ($what_day==0) {
                // actually Sunday, last day of the week. FIX;
                $timestamp = strtotime("-6 days",$timestamp);
            } elseif ($what_day > 1) {
                $what_day--;
                $timestamp = strtotime("-$what_day days",$timestamp);
            }
    if($d == 1)        {$day = $week_dates[0] = date("d.m.Y",$timestamp);} // Monday
    elseif($d == 2){$day = $week_dates[1] = date("d.m.Y",strtotime("+1 day",$timestamp));} // Tuesday
    elseif($d == 3){$day = $week_dates[2] = date("d.m.Y",strtotime("+2 day",$timestamp));} // Wednesday
    elseif($d == 4){$day = $week_dates[3] = date("d.m.Y",strtotime("+3 day",$timestamp));} // Thursday
    elseif($d == 5){$day = $week_dates[4] = date("d.m.Y",strtotime("+4 day",$timestamp));} // Friday
    elseif($d == 6){$day = $week_dates[5] = date("d.m.Y",strtotime("+5 day",$timestamp));} // Saturday
    elseif($d == 7){$day = $week_dates[6] = date("d.m.Y",strtotime("+6 day",$timestamp));} // Sunday
    con_();
    // extraction de la quantité de l'an passe
    $req_Qte = mysql_query("SELECT SUM(Qte) FROM `stat_jour` WHERE date = '$day' AND origine ='dedie' ");
    $Qte_an_moins=(array_pop(mysql_fetch_row($req_Qte))); 
     
    // les jours en FRANçAIS 
    if($d == 1)        {$jour='Lundi';}
    elseif($d == 2){$jour='Mardi';}
    elseif($d == 3){$jour='Mercredi';}
    elseif($d == 4){$jour='Jeudi';}
    elseif($d == 5){$jour='Vendredi';}
    elseif($d == 6){$jour='Samedi';}
    elseif($d == 7){$jour='Dimanche';}        
     
    if($d == 1)      {$day_an = $jour . ' ' . $day;}
    elseif($d == 2) {$day_an = $jour . ' ' . $day;}
    elseif($d == 3) {$day_an = $jour . ' ' . $day;}
    elseif($d == 4) {$day_an = $jour . ' ' . $day;}
    elseif($d == 5) {$day_an = $jour . ' ' . $day;}
    elseif($d == 6) {$day_an = $jour . ' ' . $day;}
    elseif($d == 0) {$day_an = $jour . ' ' . $day;}
     
    echo $day_an . '<br/><span class="r2">' . number_format($Qte_an_moins, 0, ',', ' ') .'</span>' ";
    Merci beaucoup.

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

    Ce topic est marqué "résolu", mais il y a quand même plus court :
    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
    <?php
      function jourFrancais($jour)
      {
        $lesJour = array(
                          'Monday' => 'lundi',
                          'Tuesday' => 'mardi',
                          'Wednesday' => 'mercredi',
                          'Thursday' => 'jeudi',
                          'Friday' => 'vendredi',
                          'Saturday' => 'samedi',
                          'Sunday' => 'dimanche',
                        );
        return $lesJour[$jour];
      }
     
      function dateJour($annee, $numSemaine, $jour)
      {
        //-- détermination de la date du lundi de la semaine N° 1 ------------------
        $laDate = new DateTime($annee . '-01-01');
        //-- N° de semaine du 1er lundi --------------------------------------------
        $laDate -> modify('first monday');
        //-- si la semaine du 1er lundi est la semaine N° 1, c'est bon -------------
        //-- sinon, c'est le lundi précédent ---------------------------------------
        if ($laDate -> format('W') != '01')
        {
          $laDate -> modify('last monday');
        }
        //-- on ajoute le nombre de semaines ---------------------------------------
        $laDate -> modify('+' . ($numSemaine - 1) . ' week');
        //-- on cherche le même jour de la même semaine de l'année précédente ------
        if ($jour != $laDate -> format('l'))
        {
          $laDate -> modify('next ' . $jour);
        }
        return $laDate -> format('d/m/Y');
      }
    //------------------------------------------------------------------------------
    //------------------------------------------------------------------------------
    //------------------------------------------------------------------------------
      $aujourdhui = new DateTime();
      $numSemaine = $aujourdhui -> format('W');
      $annee = $aujourdhui -> format('Y');
      $jour = $aujourdhui -> format('l');
     
      echo jourFrancais($jour) . ' ' . dateJour($annee - 1, $numSemaine, $jour) . '<br>';
    ?>

  5. #5
    Membre régulier Avatar de nimbus_77
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 109
    Points : 108
    Points
    108
    Par défaut
    "fectivement ...

    si tous les chemins mènent à Rome,
    il y en a des plus courts.

    Et surtout plus jolis

    De plus cela me fait percevoir des possibilités que j'abordais mal ...

    Merci

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

Discussions similaires

  1. [Dates] Problème de date : jours ouvrés notamment
    Par rob2-9 dans le forum Langage
    Réponses: 2
    Dernier message: 31/01/2006, 13h46
  2. différence durée entre date jour/date champ
    Par debdev dans le forum Access
    Réponses: 9
    Dernier message: 30/11/2005, 16h55
  3. [Dates] Jour Mois anné, heure minute et seconde...
    Par SangKou dans le forum Langage
    Réponses: 4
    Dernier message: 29/11/2005, 08h34
  4. [Dates] 1er Lundi et le dernier Lundi d'un mois
    Par mic79 dans le forum Langage
    Réponses: 2
    Dernier message: 30/09/2005, 17h19
  5. date - > jour
    Par coucoucmoi dans le forum SQL
    Réponses: 7
    Dernier message: 26/03/2004, 12h08

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