Forums Développement Multimédia

Les formations Mediabox
Les formations Mediabox

Convertir une date timestamp en format français avec PHP

Compatible PHP 5. Cliquer pour en savoir plus sur les compatibilités.Par gamin, le 10 juin 2005

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.