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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 165
    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 émérite Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    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 )

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 165
    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 émérite Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    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()

  5. #5
    Membre émérite
    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
    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 émérite Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    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.

+ 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