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] Traiter une date autre que celle du jour


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 165
    Points : 137
    Points
    137
    Par défaut [Dates] Traiter une date autre que celle du jour
    bonjour j'ai une fonction qui va bien pour écrire la date avec le nom du jour etc .

    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
    function date_fr( ){ 	
    $jour =  date('l'); 
    $le = date('j'); 
    $mois =  date('F'); 
    $annee = date('Y');  
    switch($jour) { 
        case 'Monday': $jour = 'Lundi'; break; 
        case 'Tuesday': $jour = 'Mardi'; break; 
        case 'Wednesday': $jour = 'Mercredi'; break; 
        case 'Thursday': $jour = 'Jeudi'; break; 
        case 'Friday': $jour = 'Vendredi'; break; 
        case 'Saturday': $jour = 'Samedi'; break; 
        case 'Sunday': $jour = 'Dimanche'; break; 
        default: $jour =''; break; 
      } 
    switch($mois) { 
        case 'January': $mois = 'Janvier'; break; 
        case 'February': $mois = 'Février'; break; 
        case 'March': $mois = 'Mars'; break; 
        case 'April': $mois = 'Avril'; break; 
        case 'May': $mois = 'Mai'; break; 
        case 'June': $mois = 'Juin'; break; 
        case 'July': $mois = 'Juillet'; break; 
        case 'August': $mois = 'Août'; break; 
        case 'September': $mois = 'Septembre'; break; 
        case 'October': $mois = 'Octobre'; break; 
        case 'November': $mois = 'Novembre'; break; 
        case 'December': $mois = 'Decembre'; break; 
        default: $mois =''; break; 
      } 
      return $jour." ".$le." ".$mois; }
    ?>
    le soucis c'est que cette fonction envoie la date du jour

    quelqu'un voit comment la modifier ... je l'ai modifier dans tous les sens mais pas dans le bon :-(

  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
    Justement ou est le soucis ??
    J'en déduis que tu veux que la fonction traite également les autres dates ?

    la fonction date('format',[timestamp]) prend un second paramètre optionnel sous la forme d'un timestamp UNIX ( nombre de secondes de puis le 1-1-1970)

    A toi de modifier ta fonction pour lui adjoindre un paramètre.

    Edit En te penchant sur la fonction date() et surtout sur les formats possibles, tu verras que tu peux aussi avoir le jour de la semaine sous format numérique tout comme le mois ( beaucoup plus simple à traiter, même si moins parlant )
    Pierre
    1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune.
    2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers
    3. Un code rapide c'est bien, un code maintenable c'est mieux
    ...

    Why was the font tag an orphan ? Because it didn't have a font-family.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 165
    Points : 137
    Points
    137
    Par défaut
    çà marche ! ouf !
    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
    function date_fr($date_sql) { 
    $jour = substr($date_sql,8,2);
    $mois = substr($date_sql,5,2);
    $annee  = (integer) substr($date_sql,0,4);
     
    $date_sql = mktime(0, 0, 0, $mois, $jour, $annee);
    $jour =  date('l',$date_sql); 
    $le = date('j', $date_sql); 
    $mois =  date('F', $date_sql); 
    $annee = date('Y', $date_sql); 
    $heure = date('G', $date_sql); 
    $minute =  date('i',$date_sql); 
    switch($jour) { 
        case 'Monday': $jour = 'Lundi'; break; 
        case 'Tuesday': $jour = 'Mardi'; break; 
        case 'Wednesday': $jour = 'Mercredi'; break; 
        case 'Thursday': $jour = 'Jeudi'; break; 
        case 'Friday': $jour = 'Vendredi'; break; 
        case 'Saturday': $jour = 'Samedi'; break; 
        case 'Sunday': $jour = 'Dimanche'; break; 
        default: $jour =''; break; 
      } 
    switch($mois) { 
        case 'January': $mois = 'Janvier'; break; 
        case 'February': $mois = 'Février'; break; 
        case 'March': $mois = 'Mars'; break; 
        case 'April': $mois = 'Avril'; break; 
        case 'May': $mois = 'Mai'; break; 
        case 'June': $mois = 'Juin'; break; 
        case 'July': $mois = 'Juillet'; break; 
        case 'August': $mois = 'Août'; break; 
        case 'September': $mois = 'Septembre'; break; 
        case 'October': $mois = 'Octobre'; break; 
        case 'November': $mois = 'Novembre'; break; 
        case 'December': $mois = 'Decembre'; break; 
        default: $mois =''; break; 
      } 
      return $jour." ".$le." ".$mois." ".$annee; }

  4. #4
    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
    Juste pour savoir, quel est le format de $date_sql ??

    C'est pas que j'aime pas substr() mais si le format est défini et fixe, il y a quand même explode()
    Pierre
    1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune.
    2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers
    3. Un code rapide c'est bien, un code maintenable c'est mieux
    ...

    Why was the font tag an orphan ? Because it didn't have a font-family.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Points : 631
    Points
    631
    Par défaut
    Bonsoir,
    j'ai codé une petite fonction pour vous.

    Code fDate.php : 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
    <?php
     
      function fDate($aaaammjj)
      {
     
        list($annee, $mois, $jour) = explode('-', $aaaammjj);
        $date = explode('-', date('w-j-n-Y', mktime(0, 0, 0, $mois, $jour, $annee)));
     
        $tJdls = 'Dimanche;Lundi;Mardi;Mercredi;Jeudi;Vendredi;Samedi';
        $tJdls = explode(';', $tJdls);
     
        $date[0] = $tJdls[$date[0]];
     
        if ($date[1] == '1') $date[1] = '1er';
     
        $tMois = ';Janvier;Février;Mars;Avril;Mai;Juin;'
         .'Juillet;Août;Septembre;Octobre;Novembre;Décembre';
        $tMois = explode(';',$tMois);
     
        $date[2] = $tMois[$date[2]]; 
     
        return join(' ', $date); 
     
      }
     
      echo fDate('2008-01-01');
     
    ?>

    Elle n'est pas parfaite, mais elle affiche "Mardi 1er Janvier 2008".

    Cordialement,
    DaRiaN.

  6. #6
    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
    Tant qu'on est dans cette fonction, j'ai apporté quelques modifications à la variante de Darian

    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
     
    $tJdls = array('Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi');
    $tMois = array(1=>'Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre');
     
    function FabriqueDate($aaaammjj){
    	global $tJdls,$tMois;
    	list($annee, $mois, $jour) = explode('-', $aaaammjj);
    	$tabDate = getdate(mktime(0, 0, 0, intval($mois), intval($jour), intval($annee) ));
     
    	$maDate = $tJdls[$tabDate['wday']] .' ';
    	$maDate .= $tabDate['mday'];
    	if ($tabDate['mday'] == 1) {
    		$maDate .= 'er';
    	}
    	$maDate .= ' ' .$tMois[$tabDate['mon']] .' '.$tabDate['year'];
    	return $maDate;	
    }
    J'explique :
    • J'ai mis jour et mois sous forme de tableau car je ne vois pas l'utilité de redécouper par explode()
    • J'ai mis ces deux tableaux en variable globale, car aucune utilité de redéfinir à chaque fois. Autre avantage, les tableaux peuvent etre placé en include dans le cadre d'une internationalisation.
    • Php fournit getdate(), une fonction retournant sous forme de tableau les "attributs calendaires" dont a besoin ( joursemaine, jour, mois, annee )


    La fin est à peu de choses près identique. Le code semble plus complexe à cause des multiples tableaux mais il reste lisible.
    Pierre
    1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune.
    2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers
    3. Un code rapide c'est bien, un code maintenable c'est mieux
    ...

    Why was the font tag an orphan ? Because it didn't have a font-family.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 165
    Points : 137
    Points
    137
    Par défaut
    c'est clair que vos codes sont plus pro
    merci beaucoup

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

Discussions similaires

  1. utilisation date autre que celle du jour
    Par marcel marie dans le forum Langage
    Réponses: 7
    Dernier message: 01/12/2011, 19h05
  2. [DeskI XiR2] Comparaison d'une valeur à une date et à une date relative
    Par courti01 dans le forum Débuter
    Réponses: 1
    Dernier message: 07/11/2010, 21h39
  3. Réponses: 1
    Dernier message: 20/04/2010, 13h58
  4. Réponses: 10
    Dernier message: 20/02/2009, 11h25
  5. prendre une autre date que celle du jour
    Par taka10 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 15/01/2007, 16h25

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