Posez votre question Signaler

PHP comment mettre la date en Français ? [Résolu]

DessJess 22Messages postés 6 mai 2004Date d'inscription - Dernière réponse le 24 mai 2012 à 19:20
Bonjour à tous !

Lorsque je tape :
setlocale (LC_ALL, "fr_FR");
// on définit les valeurs locales pour la france
echo strftime("%A %d %B",time());

La date reste en Anglais !!!
quelqu'un connait la solution ?
Me manquerai t'il un fichier ou une autre fonction ?

Merci d'avance !

DessJess
Lire la suite 

PHP comment mettre la date en Français »

Suggestions
37 réponses
Réponse
+47
moins plus
Si vous utilisez de l'UTF-8

<? 
setlocale (LC_TIME, 'fr_FR.utf8','fra'); 
echo (strftime("%A %d %B")); 
?>
Ajouter un commentaire
Réponse
+15
moins plus
Bon, je vais pas faire le vache, vous avez surement entendu parler des tableaux ?
non?

bon,

<?php

$jour = array("Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi");

$mois = array("","Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre");

$datefr = $jour[date("w")]." ".date("d")." ".$mois[date("n")]." ".date("Y");

echo "Nous sommes le ". $datefr;

?>

Ce script est réutilisable pour la plupart des langues, vous changez juste les contenus des arrays pour avoir la date dans la langue voulue, cependant, vous devrez faire la traduction manuellement.

Par exemple, si vous voulez mettre tout le script en Espagnol; voici comment procéder :

<?php

$jour= array ("Domingo","Lunes","Martes","Miercoles","Jueves","Viernes","Sabado");
Et ainsi de suite ...
pareil pour le tableau des mois

$dateesep = $jour[date("w")]."".".date("d")."".$mois[date("n")."".date("Y");

echo "La fecha de hoy es ".$dateesp;

?>

Je ne vais pas vous faire un cours de langue, il faut juste éviter d'etre feignant la premiere fois lors de la traduction (au passage, vous avez des sites de traduction en ligne qui peuvent s'en charger pour vous).

Bonne année à tous, et n'oubliez pas de feuilleter vos books ou cours régulierement, car les langages de prog ne sont pas statiques, eux !
Simoncini - 1 mars 2011 à 11:49
bande de raouls
Olivier C - 1 déc. 2011 à 21:55
Merci, j'avais tenté d'autres codes plus concis qui fonctionnaient en local mais pas sur mon serveur. Avec ce script: plus de problème de compatibilité.
milan - 21 mars 2012 à 10:41
En reprenant et généralisant :
<?php
function datefr($arg){
$NomDuJour = array ("Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi");
$NomDuMois = array ("janvier", "f?vrier", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre");
$lejour = date("d",$arg);
$lemois = date("m",$arg);


$ladatefr=$NomDuJour[ date('w',$arg) ]." ";

if($lejour==01){$ladatefr.=" 1er "; }
else if($lejour<10){$ladatefr.=" $lejour[1] "; }
else { $ladatefr.=date (" d ",$arg); }

$ladatefr.=$NomDuMois[ date($lemois - 1) ]." ".date('Y - H:i');

return $ladatefr;

}

//-exemple :
echo "Nous sommes le ". datefr(mktime());

$hier=mktime()-3600*24;

echo "<p>hier nous étions le ".datefr($hier);

//--pour le premier du mois

$lepremiermars2012=mktime(0, 0, 0, 3, 1, 2012);
echo "<p>le 1/03/2012 donne ".datefr($lepremiermars2012);
?>
Ajouter un commentaire
Réponse
+14
moins plus
rien de plus simple :
<?
setlocale (LC_TIME, 'fr_FR'); 
print strftime("%A %d %B %Y %T");
?>
moudar - 19 juil. 2010 à 16:08
Bonjour, ça marche mieux en mettant "fr-FR" au lieu de "fr_FR"
Ajouter un commentaire
Réponse
+9
moins plus
setlocale (LC_TIME, 'fr_FR');
$dateFormat = "2010-04-20";
$date = strftime("%A %d %B %Y",strtotime("$dateFormat"));

output : mardi 20 avril 2010
Ajouter un commentaire
Réponse
+6
moins plus
Plus complet :

<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
</head>
<body>
<p>Nous sommes le
<?php
setlocale (LC_TIME, 'fr_FR','fra');
echo strftime("%A %d %B %Y %T %H:%M:%S");
?>
</p>

</body>
</html>

Ce qui donne le résultat :

Nous sommes le vendredi 18 janvier 2008 14:23:56
Jyve - 22 janv. 2008 à 11:16
Yes badvador, c'est exactement ça.

Cependant, j'ai décompilé le truk pour que tout le monde pige un peu.

Je vois que pas beaucoup de personnes utilisent les tabelaux alors que c'est une formidable fonction.

Perso, j'utilise ta méthode, c'est plus propre dans le code.

++
Olivier - 29 nov. 2011 à 20:54
Merci, c'est exactement la fonction que je recherchais. Par contre, si j'ai bien une majuscule pour le jour en local, tout est en minuscule une fois sur le serveur... Y-a-t-il un moyen de forcer l'affichage en majuscule pour les jours (Lundi, Mardi...) sans être obligé de passer par le CSS ?

Si je pouvais éviter de passer par un "text-transform : capitalize" pour si peu...
Ajouter un commentaire
Réponse
+5
moins plus
Et pour savoir quelle est la bonne chaîne à rentrer :

<? 
$mon_local=setlocale (LC_TIME, 'fr_FR.utf8','fra');
echo $mon_local; 
?>


Par exemple ma chaîne retournée est "fr_FR.utf8". Donc le code correct va être.

<? 
setlocale (LC_TIME, 'fr_FR.utf8');
?>


Tout dépend du serveur.
openlife - 1 déc. 2008 à 16:30
strftime("format", $timestamp);
Ajouter un commentaire
Réponse
+2
moins plus
ou encore plus simple :

<?
setlocale ("LC_TIME", "fr");
echo (strftime("%A %d %B"));
?>

=)
Ajouter un commentaire
Réponse
+2
moins plus
<?php
setlocale (LC_TIME, 'fr_FR','fra');
echo strftime("%A %d %B %Y %T");
?>
Ajouter un commentaire
Réponse
+2
moins plus
Voice un code tres simple qui permet de convertir une date SQL end ate francaise.
le $row est une request de la colone date on sql, vous pouvez la remplaced avec time(); ou au format AAAA-MM-JJ

<? 
$sqldate = $row['date];

(preg_match("/([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})/", $sqldate, $regs));
		$jour = array("Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"); 
		$mois = array("","Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre");
		$datefr = $jour[date("w",mktime(0, 0, 0, $regs[2], $regs[3], $regs[1]))];
		$datefr .= " ".date("d",mktime(0, 0, 0, $regs[2], $regs[3], $regs[1]));
		$datefr .= " ".$mois[date("n",mktime(0, 0, 0, $regs[2], $regs[3], $regs[1]))];
		$datefr .= " ".date("Y",mktime(0, 0, 0, $regs[2], $regs[3], $regs[1])); 
		echo $datefr;
	

?>
Krystouf - 18 mars 2012 à 19:39
Salut, j'aurais voulu savoir comment faire s'il on voulait rajouter à la suite l'heure à laquelle a ete posté le message. J'ai essayé
$datefr .= " à ".date("H:i:s",mktime(0, 0, 0, $regs[2], $regs[3], $regs[1]));

Mais cela m'afficher 00:00:00 je ne sais pas quoi mettre à la place des 0,0,0, $regs[.....
ReDLoG - 18 mars 2012 à 19:49
Si tu veux rajouter l'heure il suffit de faire :
$datefr .= date("H:i:s");
Ajouter un commentaire
Réponse
+1
moins plus
La locale "fr" simple ne semble pas installée. Il faut utiliser "fr_FR" :

setlocale(LC_ALL, "fr_FR");

-----
Vive le carillon !
http://carillon.avenue-du.net
Ajouter un commentaire
Réponse
+1
moins plus
Je viens d'ssayer ce code j'ai cette erreur là :
Fatal error: Cannot redeclare date_fr() (previously declared in c:\program files\easyphp1-8\www\zarimmo\index.php:106) in c:\program files\easyphp1-8\www\zarimmo\index.php on line 106
voici le code :
 /*Affichage de la date*/
 $jour["Monday"] = "Lundi";
$jour["Tuesday"] = "Mardi";
$jour["Wednesday"] = "Mercredi";
$jour["Thursday"] = "Jeudi";
$jour["Friday"] = "Vendredi";
$jour["Saturday"] = "Samedi";
$jour["Sunday"] = "Dimanche";

function date_fr($date)
{
$date=str_replace ("Monday","Lundi",$date);
$date=str_replace ("Tuesday","Lundi",$date);
$date=str_replace ("Wednesday","Lundi",$date);
$date=str_replace ("Thursday","Lundi",$date);
$date=str_replace ("Friday","Lundi",$date);
$date=str_replace ("Saturday","Lundi",$date);
$date=str_replace ("Sunday","Lundi",$date);


$date=str_replace("January","Janvier",$date);
$date=str_replace("February","Février",$date);
$date=str_replace("March","Mars",$date);
$date=str_replace("April","Avril",$date);
$date=str_replace("May","Mai",$date);
$date=str_replace("June","Juin",$date);
$date=str_replace("July","Juillet",$date);
$date=str_replace("August","Août",$date);
$date=str_replace("September","Septembre",$date);
$date=str_replace("October","Octobre",$date);
$date=str_replace("November","Novembre",$date);
$date=str_replace("December","Décembre",$date);
//... et ainsi de suite pour tout les jours et mois
return ($date);
}

setlocale (LC_ALL, 'fr_FR');
$date=strftime ("%A %d %B",time ());
echo date_fr($date); //utilisation de la fonction
Ajouter un commentaire
Réponse
+1
moins plus
Salut, un moyen plus simple :
<?php
// TEMPS
$temps = time();

// JOURS
$jours = array('Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi');
$jours_numero = date('w', $temps);
$jours_complet = $jours[$jours_numero];
// Numero du jour
$NumeroDuJour = date('d', $temps);


// MOIS
$mois = array('', 'Janvier', 'Février', 'Mars', 'Avril', 'Mai',
'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre');
$mois_numero = date("m", $temps);
$mois_complet = $mois[$mois_numero];

// ANNEE
$annee = date("Y", $temps);

// Affichage DATE
echo "<p>Date : Nous sommes le <strong>$jours_complet $NumeroDuJour $mois_complet $annee</strong></p>";
?>


Résultat : http://dimeftp.free.fr/PHP/date.php ;)
DanielB - 19 avril 2009 à 09:34
Salut,
je me prenais la tete depuis un bon bout de temps pour sortir une date sql aaaa-mm-jj en francais.
J'ai transforme ton code en fonction (pas de quoi etre fier, mais je ne l'ai pas trouve sous cette forme sur le web)

function f_date($sqldate)
{
// TEMPS
// $temps = time();
$temps=strtotime($sqldate);
// JOURS
$jours = array('Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi');
$jours_numero = date('w', $temps);
$jours_complet = $jours[$jours_numero];
// Numero du jour
$NumeroDuJour = date('d', $temps);

// MOIS
$mois = array(' ', 'Janvier', 'Février', 'Mars', 'Avril', 'Mai',
'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre');
$mois_numero = date("n", $temps);
$mois_complet = $mois[$mois_numero];

$an = date('Y', $temps);


$fr_temps="$jours_complet $NumeroDuJour $mois_complet $an";

return "$fr_temps";
}
albane - 23 avril 2009 à 11:57
Salut,

merci pour ce code très pratique.
Par contre le mois ne fonctionne pas...
planete.game57- 28 mars 2010 à 20:49
Bonjour,

Le code était très juste, il suffit de mettre n à la place de m dans $mois_numero = date("m", $temps); et le mois fonctionne !

Si ça peut aider quelqu'un, servez-vous ;)
Ajouter un commentaire
Réponse
+1
moins plus
Plein d"infos intéressantes sur le site suivant :
http://www.info-3000.com/phpmysql/date.php

Je vous copie-colle la fonction suivante qui permet de traduire les dates des bdd en français

<?php

function DateConviviale($QuelleDate)
{
$NomJour = date("D", strtotime($QuelleDate));
$Jour = date("j", strtotime($QuelleDate));
$NomMois = date("M", strtotime($QuelleDate));
$Annee = date("Y", strtotime($QuelleDate));

// Nom du jour en toutes lettres :
switch ($NomJour)
{
case "Mon": $NomJour = "Lundi"; break;
case "Tue": $NomJour = "Mardi"; break;
case "Wed": $NomJour = "Mercredi"; break;
case "Thu": $NomJour = "Jeudi"; break;
case "Fri": $NomJour = "Vendredi"; break;
case "Sat": $NomJour = "Samedi"; break;
case "Sun": $NomJour = "Dimanche"; break;
}
// Nom du mois en toutes lettres :
switch ($NomMois)
{
case "Jan": $NomMois = "Janvier"; break;
case "Feb": $NomMois = "Février"; break;
case "Mar": $NomMois = "Mars"; break;
case "Apr": $NomMois = "Avril"; break;
case "May": $NomMois = "Mai"; break;
case "Jun": $NomMois = "Juin"; break;
case "Jul": $NomMois = "Juillet"; break;
case "Aug": $NomMois = "Août"; break;
case "Sep": $NomMois = "Septembre"; break;
case "Oct": $NomMois = "Octobre"; break;
case "Nov": $NomMois = "Novembre"; break;
case "Dec": $NomMois = "Décembre"; break;
}

return $NomJour." ".$Jour." ".$NomMois." ".$Annee;
}

//exemple
$date_test = '2011-11-14';

echo DateConviviale($date_test);
// Lundi 14 novembre 2011

?>
Ajouter un commentaire
Réponse
+1
moins plus
Bonjour,
ça ne marche pas chez moi, est-ce qu'il ne faut pas intaller les locales pour php, un peu comme des modules?
du coup, je crois que je vais passer en mode 'tableau de remplacement', au moins là, c'est sûr que ça fonctionne!
Ajouter un commentaire
Réponse
+0
moins plus
Bon, Pour ced, Electrik, nip,Zartenberg,

Désolé mais vos codes sont faux !!!

Depuis la version 5.2 de php, beaucoup de fonctions sont devenues obsolètes.

Je vous conseille donc de remettre le nez dans vos books.

++
Ajouter un commentaire
Réponse
+0
moins plus
Merci Marlwin, j'ai cherché la conversion en UTF8 partout.... :)
Sandy - 1 févr. 2010 à 20:16
"Et d'ou sortes ces notations
<?
setlocale (LC_TIME, 'fr_FR');
print strftime("%A %d %B %Y %T");
?> "
>Ce sont des fonctions php : http://fr.php.net/manual/fr/function.strftime.php
Sensol - 2 févr. 2010 à 11:40
Fonction que j'utilise...  

function Date_litterale_FR($dateSQL)
{
	if (ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $dateSQL, $regs)) {
		$jour = array("Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"); 
		$mois = array("","Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre");
		$datefr = $jour[date("w",mktime(0, 0, 0, $regs[2], $regs[3], $regs[1]))];
		$datefr .= " ".date("d",mktime(0, 0, 0, $regs[2], $regs[3], $regs[1]));
		$datefr .= " ".$mois[date("n",mktime(0, 0, 0, $regs[2], $regs[3], $regs[1]))];
		$datefr .= " ".date("Y",mktime(0, 0, 0, $regs[2], $regs[3], $regs[1])); 
		return($datefr);
	}else {
		return("Format de date invalide : $date");
	}
}
zarabis - 6 févr. 2010 à 21:52
à quel endroit doit on copier cette fonction? merci
Ajouter un commentaire
Réponse
-2
moins plus
Salut,

Effectivement, ca ne marche pas mais apparement l'erreur est assez courante. Si tu veux traduir la date en francais, par contre rien de plus simple :

<?
function date_fr($date)
{
$date=str_replace ("Monday","Lundi",$date);
//... et ainsi de suite pour tout les jours et mois
return ($date);
}

setlocale (LC_ALL, 'fr_FR');
$date=strftime ("%A %d %B",time ());
echo date_fr($date); //utilisation de la fonction

?>

@+
suzana - 24 mai 2012 à 19:20
slt, j'ai un prblème, j'ai un champs date_ajout dans mon formulaire de type timestamp, lorsque je remplis ce champs il ne s'affichera pas dans la bd, il s'affiche comme ça 0000.00.00 00:00:00
je veut savoir quel est le code nécéssaire en php?
s'il vous plaît veuillez m'aider
cordialement
Ajouter un commentaire
Ce document intitulé « PHP comment mettre la date en Français ? » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?