Convertir une date timestamp en format français avec PHP
Notions abordées :
- Les tableaux
- La fonction date
- Traitement de chaine de caractère
script complet :
<? $date = "2001-09-03 22:10"; $prefix = "Le "; $suffix = " à"; $tab_month = array(1=>"Janvier", "Fevrier", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Decembre"); $tab_day = array("Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"); $tab_date = explode(' ', $date); $date_hour = explode(':', $tab_date[1]); $tab_dmy = explode('-', $tab_date[0]); $day = date("w", mktime(0, 0, 0, $tab_dmy[1], $tab_dmy[2], $tab_dmy[0])); $date = $prefix . "$tab_day[$day] " . "$tab_dmy[2] "; settype($tab_dmy[1], integer); $date .= $tab_month[$tab_dmy[1]] . " $tab_dmy[0]" . $suffix . " $date_hour[0]h " . "$date_hour[1]min"; ?>
script commenté :
$date = "2001-09-03 22:10";
les variables dont le tableau qui contient tous les mois et celui des jours
$prefix = "Le "; $suffix = " à"; $tab_month = array(1=>"Janvier", "Fevrier", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Decembre"); $tab_day = array("Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi");
format de la date 2001-09-03 22:10 on cree un tableau dont les élements sont crées à partir de la date coupée aux espaces grace à la fonction explode on aura donc dans la case 0 de $tab_date 2001-09-03 et dans la case 1 22:10
$tab_date = explode(' ', $date);
on recupere chaques parties de l'heure dans un autre tableau $date_hour
$date_hour = explode(':', $tab_date[1]);
on recupere chaques parties de la date dans un autre tableau $date_dmy
$tab_dmy = explode('-', $tab_date[0]);
on crée la date au format français en determinant le numero du jour de la semaine grace à la fonction mktime combinée avec la fonction date.
$day = date("w", mktime(0, 0, 0, $tab_dmy[1], $tab_dmy[2], $tab_dmy[0])); $date = $prefix . "$tab_day[$day] " . "$tab_dmy[2] ";
à ce stade on a deja dans $date Le Lundi 3 on recupere le mois a partir du tableau, le fait de mettre $tab_dmy[1] en integer permettra de l'utiliser comme index dans le tableau tab_month et on termine avec l'h.
settype($tab_dmy[1], integer); $date .= $tab_month[$tab_dmy[1]] . " $tab_dmy[0]" . $suffix . " $date_hour[0]h " . "$date_hour[1]min";
dans $date on aura donc Le Lundi 03 Septembre 2001 à 22h 10min apres rien ne vous empeches de rajouter les secondes ou d'enlever les Le à min h etc. Il est possible aussi de mettre tout ce code dans une fonction qui prendra en paramètre une date timestamp et qui renvera la date correctement formatée en français.
[Edit par lilive] Voir également cet article.
