Afficher la date au format "dd-mmmm-yyyy" - PHP

De UnixManiax
Aller à la navigation Aller à la recherche
La version imprimable n’est plus prise en charge et peut comporter des erreurs de génération. Veuillez mettre à jour les signets de votre navigateur et utiliser à la place la fonction d’impression par défaut de celui-ci.


Lorsqu'on récupère une date dans une variable en interrogeant une base mysql, celle-ci est renvoyée au format yyyy-mm-dd. Par exemple, pour le 13 mai 2006, sql nous renvoie 2006-05-13. Le but ici est de l'afficher comme on a l'habitude de le voir en France, c'est à dire "13 mai 2006".

Principe

Pour faire ce travail, le plus simple est de faire une fonction, car on va probablement l'utiliser souvant.

Le principe est de récupérer la date dans une variable, de modifier l'ordre des chiffres, et de remplacer les chiffres du mois par son nom en toutes lettres. Et tant qu'on y est, on va supprimer le zéro devant les neuf premiers jours du mois, et mettre "1er" pour le premier jour du mois. Le code de la fonction

On va appeler notre fonction date_format_dd_mmmm_yyyy(). C'est long, mais au moins c'est clair.

function date_format_dd_mmmm_yyyy($date) // convertie la date au format "13 mai 2006"
{
$annee = substr($date, 0, 4); // on récupère les 4 chiffres de l'année
$mois = substr($date, 5, 2); // on récupère les 2 chiffres du mois
$jour = substr($date, 8, 2); // on récupère les 2 chiffres du jour

switch ($mois) // transforme le mois de chiffres vers lettres et enregistre dans $mois_long
{
  case "01" : $mois_long = "janvier"; break;
  case "02" : $mois_long = "février"; break;
  case "03" : $mois_long = "mars"; break;
  case "04" : $mois_long = "avril"; break;
  case "05" : $mois_long = "mai"; break;
  case "06" : $mois_long = "juin"; break;
  case "07" : $mois_long = "juillet"; break;
  case "08" : $mois_long = "août"; break;
  case "09" : $mois_long = "septembre"; break;
  case "10" : $mois_long = "octobre"; break;
  case "11" : $mois_long = "novembre"; break;
  case "12" : $mois_long = "décembre"; break;
  default: $mois_long = "??";
}
switch ($jour) // transforme 01 et 1er, et supprime le 0 devant pour 2 à 9. enregistre dans $jour_long
{
  case "01" : $jour_long = "1er"; break;
  case "02" : $jour_long = "2"; break;
  case "03" : $jour_long = "3"; break;
  case "04" : $jour_long = "4"; break;
  case "05" : $jour_long = "5"; break;
  case "06" : $jour_long = "6"; break;
  case "07" : $jour_long = "7"; break;
  case "08" : $jour_long = "8"; break;
  case "09" : $jour_long = "9"; break;
  default: $jour_long = $jour;
}
$date = $jour_long.' '.$mois_long.' '.$annee;
return $date; // renvoie la nouvelle date
}


Remarques

Le code peut sembler long vu le peu de choses qu'on lui demande, mais la seule chose longue, c'est les "switch" qui transforment les chiffres en lettres, et suppriment les zéros. Sinon le code est très simple, et les commentaires suffisent à comprendre comment ça marche.

La fonction substr() sert à récupérer une partie seulement d'une chaine de caractères.


Utilisation

Pour utiliser la fonction, il suffit de faire appel à elle dans le corps de votre page web. Pour faire court, on ne va pas s'amuser ici à créer une base mysql et à l'intérroger. Ca serait beaucoup trop long. On va juste créer une variable $date qui contiendra une date au même format que sql.

Voici un exemple :

<?php
function date_format_dd_mmmm_yyyy($date) // convertie la date au format "13 mai 2006"
{
... // recopiez le code plus haut
}

$variable = "2006-05-13";
echo date_format_dd_mmmm_yyyy($variable);
?>

Il ne vous reste plus qu'à ouvrir votre page dans votre navigateur, et vous voyez apparaitre "13 mai 2006".