[PHP] Convertir une date DATETIME au format Français avec le nom des jours et des mois Par JarodxXx
le mardi 17 juin 2008, 10:19
J'en avais besoin, je ne trouvais rien de tout prêt sur le web .. alors je l'ai développé 
Une petite fonction php qui va convertir un format de date (DATETIME) au format français en ajoutant le nom du jour et le nom du mois ...
Petit exemple :
2008-06-17 10:30:56 deviendra Mardi 17 Juin 2008 à 10h 30m 56s
Mea culpa ... Parceque on peut etre developpeur et ne pas connaitre le manuel complet , parce que on peut avoir essayer mais n'avoir pas réussi , et surtout parce que on en apprend tous les jour (sinon c'est pas drôle)
voici un corectif de ma fonction qui fait ma meme chose en 2 lignes ... j'ai honte
[php]
// date et heure complete
function dateFR( $time) {
setlocale(LC_ALL, 'fr_FR');
return strftime('%A %d %B à %Hh %Mmin %Ss', strtotime($time));
}
// format racourcis (pas d'heure)
function dateFR_S( $time) {
setlocale(LC_ALL, 'fr_FR');
return strftime('%A %d %B ', strtotime($time));
}
Vous pouvez toujours utiliser celle ci vous vous avez de la ressource a perdre -_-
[php]
// Convertir un datetime en format complet FR
// $time est le FORMAT DATETIME SQL au format : YYYY-MM-DD hh:ii:ss
// $mode affiche ou non l'heure
function dateFR( $time , $mode = 'long' ) {
setlocale( LC_TIME, "fr" );
// Recuperation du nom du mois
$mi = strftime( "%m" , strtotime( $time ) );
switch ($mi){
case '1' : $mi = 'Janvier'; break;
case '2' : $mi = 'Février'; break;
case '3' : $mi = 'Mars'; break;
case '4' : $mi = 'Avril'; break;
case '5' : $mi = 'Mai'; break;
case '6' : $mi = 'Juin'; break;
case '7' : $mi = 'Juillet'; break;
case '8' : $mi = 'Août'; break;
case '9' : $mi = 'Septembre'; break;
case '10' : $mi = 'Octobre'; break;
case '11' : $mi = 'Novembre'; break;
case '12' : $mi = 'Decembre'; break;
}
// Recuperation du nom du jour
$w = strftime( "%u" , strtotime( $time ) );
switch ($w){
case '1' : $w = 'Lundi'; break;
case '2' : $w = 'Mardi'; break;
case '3' : $w = 'Mercredi'; break;
case '4' : $w = 'Jeudi'; break;
case '5' : $w = 'Vendredi'; break;
case '6' : $w = 'Samedi'; break;
case '7' : $w = 'Dimanche'; break;
}
// Recuperation du jour
$mor1 = strftime( "%d " , strtotime( $time ) );
// Recuperation de l'année
$mor2 = strftime( "%Y" , strtotime( $time ) );
if ( $mode == 'long' ) {
// Recuperation de l'heure+minute+seconde
$mor3 = strftime( "à %Hh %Mm %Ss" , strtotime( $time ) );
}else{
$mor3 = NULL;
}
return $w.' '.$mor1.' '. $mi. ' '.$mor2. ' '.$mor3;
}












Ziki
Dailymotion
Flickr
Technorati
Twitter
1. Le mardi 17 juin 2008, 11:16 par TNMiT
un mot : Merci
moi non plus je ne l'ais jamais trouvé.
2. Le mardi 17 juin 2008, 11:45 par Guillaume
Merci parce que c'est le genre de truc bien pratique, surtout quand on débute avec le language PHP
3. Le mardi 17 juin 2008, 14:07 par Emacs
Bien sûr ce code est une blague ^^
Sans plaisanter, tu peux le faire tout simplement en une ligne en profitant de la puissance de PHP et de sa capacité à s'adapter à la locale du serveur.
<?php
setlocale(LC_ALL, 'fr_FR');
strftime('%A %d %B à %Hh %Mmin %Ss', strtotime('2008-06-17 14:04:08'));
?>
Avec ça, ça devrait être ok
> http://fr.php.net/strftime
> http://fr.php.net/strtotime
++
4. Le mardi 17 juin 2008, 14:24 par bob
et en plus long y'a pas ?
5. Le mardi 17 juin 2008, 15:21 par Dhoko
Merci, ça pourra toujours me servir
6. Le mardi 17 juin 2008, 15:35 par jarodxxx
Mea culpa .. J'ai tellement tatillonné avec cette fonction .. J'edite le billet
Merci Emacs ...
7. Le mardi 17 juin 2008, 17:04 par vanno
Comme le dit Emacs, y'a plus simple avec strftime();
et puis setlocale( LC_TIME, "fr" ); ne marche pas sur tous les serveurs web
voilaaaa
8. Le mardi 17 juin 2008, 17:10 par jarodxxx
j'avais compris ...
9. Le mardi 17 juin 2008, 20:56 par Palleas
Et même, dans ton premier code, tu connais pas les tableaux associatifs ? ^^
10. Le mercredi 18 juin 2008, 12:03 par as3libs
Dur les commentaires...
Il y a peut être un manque de recherche de ta part mais c'est super ce que tu fais ^^. Bonne continuation.
11. Le mercredi 18 juin 2008, 19:28 par Joe Le Mort
Sympa celle ci.
J'en ai fait une qui gère tous les formats de date les plus utilisés en parametre ce que ne fait pas la tienne.
12. Le jeudi 19 juin 2008, 23:11 par Tueur de Joe
Oh oui oui Joe, poste nous ton code, y'a au moins une chance que e soit 10 fois plus long que ce ticket. Ca peut être drole :P
13. Le samedi 21 juin 2008, 20:58 par antouane
Il est recommandé de faire un setlocale au début de l'exécution du site.
14. Le dimanche 29 juin 2008, 01:44 par Ange
Hello, sympa comme fonction, et pratique. Par contre tu aurai pu combiner ensemble tes deux fonction dateFR et dateFR_S
function dateFR($time,$mode)
{
setlocale(LC_ALL, 'fr_FR');
switch($mode)
{
case "long" : $date = strftime('%A %d %B à %Hh %Mmin %Ss',strtotime($time));
case "court" : $date = strftime('%A %d %B',strtotime($time));
}
return $date;
}
15. Le lundi 30 juin 2008, 14:19 par apprenti-chercheur
Trop dur les commentaire.
Bah moi ton post m'a été très précieux. Je galérais à chercher sur internet depusi pas mal de temps et ton post m'a sauvé.
Je dirais même mieux la solution en deux lignes ne marche pas chez moi à cause d'un défaut de configuration de php.ini alors que ton code long marche.
Merci beaucoup.
16. Le mardi 8 juillet 2008, 13:11 par soso
Si ça peut te consoler Jarox, moi non plus je ne l'avais jamais trouvée cette fonction tant et si bien que j'ai laissé partout dans un site PHP que j'ai développé la date au format brut... :S
17. Le mercredi 13 août 2008, 10:41 par seb
Voici le résultat que j'obtient avec le corectif :
Wednesday 13 August à 10h 39min 19s
Le résultat souhaité serait :
Mercredi 13 Aout à 10h 39min 19s
Possible?
Merci
18. Le vendredi 17 octobre 2008, 16:31 par sagat06
Même chose que seb,
Le correctif me donne la date dans le bon ordre, mais en anglais !!
Mais merci quand même, et en espérant un correctif.
19. Le vendredi 17 octobre 2008, 16:54 par sagat06
J'ai résolu mon soucis de date toujours écrite en anglais, il faut mettre:
setlocale(LC_TIME, "fr_FR", "fr_FR@euro", "fr", "FR", "fra_fra", "fra")
et cela fonctionne.
Merci encore.
20. Le mardi 20 avril 2010, 18:43 par beninsky
Merci beaucoup, pour moi la version courte marche ! Un code très utile et je ne trouve rien de comparable non plus sur la toile c'est très bizarre !!