[Résolu] Explications php formtage date fr

FloK77

Expert
Voila je débute en php et je viens donc de "réussir" a afficher une date sous le format suivant:
ex: Mardi 23 Janvier 2007.

Cependant j'aimerais quand meme qq explications car le code trouvé sur internet ne me parle pas trop.

[cpp]<?php
// fonction date en francais
function date_fr()
{
$mois = array("Janvier", "Fevrier", "Mars",
"Avril","Mai", "Juin",
"Juillet", "Août","Septembre",
"Octobre", "Novembre", "Decembre");
$jours= array("Dimanche", "Lundi", "Mardi",
"Mercredi", "Jeudi", "Vendredi",
"Samedi");
return $jours[date("w")]." ".date("j").$mois[date("n")-1]." ".date("Y");
}
print(date_fr());
?> [/cpp]

Merci a vous.
 

Johan_et_Pirlouit

Grand Maître
Chez moi, j'utilise ces deux "choses".. Ca n'est pas très "parfait" côté usage du PHP, mais ça fonctionne :
[cpp]function gendate() { // Génère la date, si besoin (cas où la date n'est pas lue dans une bdd)
$date = date("w d m Y\, H\hi");
return $date;
}

function changedate($date,$format) { // Transforme la date au format désiré
if (ereg("([0-6]{1}) ([0-9]{2}) ([0-9]{2}) ([0-9]{4}), ([0-9]{2})h([0-9]{2})", $date, $regs) OR ereg("([0-9]{4})-([0-9]{2})-([0-9]{2}) ([0-9]{2}):([0-9]{2}):([0-9]{2})", $date, $regs)) {
$yyyy = 4;
$mm = 3;
$dd = 2;
$offset = 0;

if (ereg("([0-9]{4})-([0-9]{2})-([0-9]{2}) ([0-9]{2}):([0-9]{2}):([0-9]{2})", $date, $regs)) {
$yyyy = 1;
$mm = 2;
$dd = 3;
$offset = 1;
}

$tab_jours = array("Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi");
$DayName = $tab_jours[($regs[1])];

$jourNum = $regs[$dd];
if($regs[$dd] == "1") {
$jourNumPart = "1er";
}
elseif($regs[$dd] > "1" && $regs[$dd] < "10") {
$jourNumPart = substr($regs[$dd], 1,1);
}
else { $jourNumPart = $regs[$dd]; }

$tab_mois = array("Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre");
$moisNum = $regs[$mm];
$moisName = $tab_mois[($regs[$mm]-1)];

$anneeNum = $regs[$yyyy];

$heureNum = $regs[5 - $offset];

$minNum = $regs[6 - $offset];

switch ($format) {
case 1 : $date = $DayName.' '.$jourNumPart.' '.$moisName.' '.$anneeNum.', '.$heureNum.'h'.$minNum; break;
// Format "Lundi 20 Avril 2006, 20h30"
case 2 : $date = $anneeNum.'-'.$moisNum.'-'.$jourNum.', '.$heureNum.'h'.$minNum; break;
// Format "2006-04-20, 20h30"
case 3 : $date = $jourNumPart.' '.$moisName.' '.$anneeNum; break;
// Format "20 Avril 2006"
case 4 : $date = $DayName.' '.$jourNumPart.' '.$moisName.' '.$anneeNum; break;
// Format "Lundi 20 Avril 2006"
case 5 : $date = $jourNum.' / '.$moisNum.' / '.$anneeNum; break;
// Format "20 / 04 / 2006"
case 6 : $date = $jourNum.'.'.$moisNum.'.'.$anneeNum.', '.$heureNum.'h'.$minNum; break;
// Format "20.04.2006, 20h30"
}
}
return $date;
}[/cpp]
Vois ce qui peut te convenir ;)..

:merci:
 

FloK77

Expert
Oulala c'est encore plus compliqué !
J'ai réussi avec ma méthode, je voulais juste des explications
Par exemple pourquoi faire un tableau & détails de la fonction return
Mais c'est gentil quand meme
 

dartyduck

Grand Meuble Suprême
Sinon j'ai ça à te proposer:
[cpp]
<?php
setlocale(LC_ALL, 'french');
$JourL = strftime("%A");
$Jour = strftime("%d");
$Mois = strftime("%B");
$Annee = strftime("%Y");
$heure = date("H:i");
echo "Bonjour, nous sommes le $JourL $Jour $Mois $Annee et il est $heure";
?>
[/cpp]
Peut-etre cela te sera-t-il plus parlant ?
 

zeb

Modérateur
Tout ca pour afficher une date ! C'est marrant votre PHP
Je préfère (estétiquement) la version de dartyduck :o
 

Johan_et_Pirlouit

Grand Maître
Je préfère (estétiquement) la version de dartyduck :o
Tu m'étonnes [:diabolo] !! Je suis loin d'être un as en PHP........

Je sens bien que je vais m'inspirer du code de dartyduck.. D'ailleurs, plus d'infos sur le manuel PHP >> ..

:merci:
 

FloK77

Expert
Oui a la limite ca parrait plus simple une fois qu'on a lu le manuel :D
Enfin bon ma méthode marche aussi mais faut réfléchir pour rien.
Merci dartyduck
 

marsien

Grand Maître
Pour ta méthode FloK, elle est très proche de celle dont je me sers aussi et fait appel aux tableaux php. Lit la doc php sur les arrays et tu comprendras le fonctionnement.

Dans le return, entre crochets se trouve au final un nombre (données par la variable $date) ce nombre renvoi ensuite à la ligne du tableau donné par la variable placé avant les crochets. SI tu te reporte au contenu de cette variable, tu verras que c'est un tableau (dfinit juste au dessus. Et si tu compte (en commençant à 0, tu verras que le nombre plac" entre crochet par ta variable date renvoie automatiquement sur le jour correspondant dans la ligne du tableau visé.

Idem pour les mois.
 

dartyduck

Grand Meuble Suprême
Moi je suis faignant, alors je cherche toujours à aller au plus simple... Les faignants sont les plus efficaces, ils se prennent pas la tete !! mdr
 

KangOl

Grand Maître


c'est (presque) la meilleurs méthode ...

pour bien faire, faut ne faire qu'un seul appel a strftime
Code:
<?php
setlocal(LC_ALL, 'french');
echo strftime("Bonjour, nous sommes le %A %d %B %Y et il est %H:%M");
?>
 

boub popsyteam

Grand Maître
Il faut sauver la locale avant de faire ça et la restaurer apres :o

Code:
$oldlocale = setlocale(LC_TIME, NULL); #save current locale 
setlocale(LC_TIME,'fr_FR');

...

setlocale(LC_TIME, $oldlocale);
 

boub popsyteam

Grand Maître
Pour être 100% propre ;)
Et surtout réutilisable.

Sinon tu pourrais changer la locale alors qu'un autre bout de prog a besoin que ce soit autrement ...
 

Johan_et_Pirlouit

Grand Maître

C'est ça que de ne pas être programmeur (et de ne pas chercher plus que ça à l'être) :o... Mais je garde bonne note de ce topic :D !

:merci:
 

zeb

Modérateur

Pour moi : Victoire de Rocky Boubpopsyteam Balboa ! :D
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 098
Messages
6 717 044
Membres
1 586 281
Dernier membre
moto45ktm
Partager cette page
Haut