En travaillant avec des SGBD, nous sommes souvent confrontés à des problèmes de dates. En effet , les dates stockées sont au format US (AAAA-MM-JJ). Pour afficher une date en français, c’est à dire au format JJ-MM-AAAA, il est nécessaire de faire une conversion.
Il est possible de convertir très simplement une date US vers le format FR grâce à la fonction strftime.
Voici un exemple :
<?php /* Configure le script en français */ setlocale (LC_TIME, 'fr_FR','fra'); //Définit le décalage horaire par défaut de toutes les fonctions date/heure date_default_timezone_set("Europe/Paris"); //Definit l'encodage interne mb_internal_encoding("UTF-8"); //Convertir une date US en françcais function dateFr($date){ return strftime('%d-%m-%Y',strtotime($date)); } echo dateFr('2010-02-25'); //Affiche 25-02-2010 ?>
Un autre exemple avec strftime en affichant cette fois-ci une date complète avec le jour de la semaine :
<?php /* Configure le script en français */ setlocale (LC_TIME, 'fr_FR','fra'); //Définit le décalage horaire par défaut de toutes les fonctions date/heure date_default_timezone_set("Europe/Paris"); //Definit l'encodage interne mb_internal_encoding("UTF-8"); //Convertir une date US vers une date en français affichant le jour de la semaine function dateLongue($date,$heure = 'yes'){ if($heure == 'yes') { $strDate = mb_convert_encoding('%A %d %B %Y à %Hh%M','ISO-8859-9','UTF-8'); } else { $strDate = mb_convert_encoding('%A %d %B %Y','ISO-8859-9','UTF-8'); } return iconv("ISO-8859-9","UTF-8",strftime($strDate ,strtotime($date))); } $date1 = '2010-01-05 10:11:54'; echo dateLongue($date1); //Affiche mardi 05 janvier 2010 10h11 $date2 = '2010-01-05'; echo dateLongue($date2,'no'); //Affiche mardi 05 janvier 2010 ?>
Merci beaucoup pour ce script, il m’a grandement aidé.
Bonjour,
Ce script fonctionne mais je voudrais savoir comment rajouter :-si c’est aujourd’hui : lui dire d’écrire « Aujourd’hui » à la place de la date-si c’est hier : lui dire d’écrire « Hier » à la place de la date-sinon afficher la date comme elle l’est affichée actuellement
Merci d’avanceCordialement
Bonjour,
Il faut que tu créé une fonction pour cela. Je te conseille de faire une recherche google sur le sujet : https://www.google.fr/search?q=relative+date+php ou encore en recherchant « php time span » http://www.jak.cx/2012/04/php-from_time-a-human-readable-time-span-phrase/
Si tu maitrises les templates, tu peux le faire aussi avec smarty et le plugin timeSpan : http://www.factory8.com/2010/10/smarty-date-plugin/