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

PHP comment mettre la date en Français ? PHP date en francais et pas en anglais ! (Résolu) DATE EN FRANCAIS DANS UN MODULE JOOMLA/ PHP Format de date anglais/français et crontab (Résolu) [PHP] différence entre 2 dates en variable (Résolu) Date en francais (Résolu)

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

Forum

PHP comment mettre la date en Français ? PHP date en francais et pas en anglais ! (Résolu) DATE EN FRANCAIS DANS UN MODULE JOOMLA/ PHP Format de date anglais/français et crontab (Résolu) [PHP] différence entre 2 dates en variable (Résolu) Date en francais (Résolu)

Web: www.shapebootstrap.net

56 réponses

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Si vous utilisez de l'UTF-8

  <?   setlocale (LC_TIME, 'fr_FR.utf8','fra');   echo (strftime("%A %d %B"));   ?>  

Reply
réponses:
  • auteur

  • auteur

    ne pas utiliser dateformat function...

  • auteur

    remplce LC_TIME par LC_ALL et fr_FR par fr-FR. apres tu mets ton strftime

  • auteur

    Impec marlwin, ça marche chez moi, merci beaucoup :)

  • auteur

    MERCIIII MARLWIN !!!

  • auteur

    Merci MARLWIN

  • auteur

    c'est parfait

  • firekkl

    Est ce que ce code marche en local?
    il me donne le resultat suivant:French_France.1252
    si oui comment faire?

  • auteur

    Bonjour, Je suis en utf8 et il m'est impossible d'afficher les lettres qui ont des accents telle qu août!

    Merci de m'aider

  • auteur

    Bonjour, Je suis en utf8 et il m'est impossible d'afficher les lettres qui ont des accents telle qu août!

    Merci de m'aider SVP

  • auteur

    Merci marlwin

  • auteur

    Merci :-)

  • auteur

    Super, merci

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Soit on utilise la fonction date() avec des str_replace pour mettre les mois et les jours en français (méthode artisanale), soit on utilise la fonction strftime qui gère l'internationalisation (multilangue), comme c'est expliqué ici :
http://www.finalclap.com/faq/81-php-afficher-date-heure-francais

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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 !

Reply
réponses:
  • auteur

  • auteur

    Merci pour ce post c'est tout ce que je cherchais ! ! ! la date en français comme ca
    ex: Vendredi 14 Janvier 2011

  • auteur

    bande de raouls

  • auteur

    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é.

  • auteur

    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);
    ?>

  • auteur

    ouff, merci

  • auteur

    Bonjour,

    J'utilise votre méthode sauf que je veux afficher la date en chinois !!! sauf que quand je traduit en chinois les jour ou les mois, il affiche des ???, il doit pas reconnaître le chinois surement un problème d'encodage de la page ??? pouvez vous me dire comment faire ??? Je vous remercie d'avance.

  • auteur

    Sa vient de l'encodage HTML

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

rien de plus simple :

<?  setlocale (LC_TIME, 'fr_FR');   print strftime("%A %d %B %Y %T");  ?>

Reply
réponses:
  • auteur

    Bonjour, ça marche mieux en mettant "fr-FR" au lieu de "fr_FR"

  • auteur

    ben non, fr_FR

  • auteur

    on peut tout mettre aussi...

    setlocale(LC_TIME, 'fr','fr_FR','[email protected]','fr_FR.utf8','fr-FR','fra');

    comme ça...

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

setlocale (LC_TIME, 'fr_FR');
$dateFormat = "2010-04-20";
$date = strftime("%A %d %B %Y",strtotime("$dateFormat"));

output : mardi 20 avril 2010

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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

Reply
réponses:
  • auteur

    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.

    ++

  • auteur

    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...

  • Simplissimots.com

    Pauvre écrivain public que je suis, j'aurais des scrupules à donner des conseils en informatique... Mais je peux dire que les noms de mois et de jours ne prennent pas de majuscule (sauf exception comme "14 Juillet" pour désigner la fête nationale).
    Je viens d'ailleurs de modifier le script de Jyve, précisément pour supprimer les majuscules dans la phrase "Nous sommes le..."

    En tous cas, merci à tous !

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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.

Reply
réponses:
  • auteur

    strftime("format", $timestamp);

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

ou encore plus simple :

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

=)

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

<?php
setlocale (LC_TIME, 'fr_FR','fra');
echo strftime("%A %d %B %Y %T");
?>

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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.

++

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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;  	    ?>

Reply
réponses:
  • auteur

    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[.....

  • auteur

    Si tu veux rajouter l'heure il suffit de faire :

    $datefr .= date("H:i:s");

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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  

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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 ;)

Reply
réponses:
  • auteur

    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";
    }

  • auteur

    Salut,

    merci pour ce code très pratique.
    Par contre le mois ne fonctionne pas...

  • auteur

    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 ;)

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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

?>

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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!

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Merci Marlwin, j'ai cherché la conversion en UTF8 partout.... :)

Reply
réponses:
  • auteur

  • auteur

    Bonjour,

    pourquoi il y a 2 apostrophes avant janvier dans $mois = array('', 'Janvier'... ?

    Merci

  • auteur

    car un tableau commence par un indice 0 or le mois de janvier correspond a l'indice 1

  • auteur

    Ok merci, mais pourriez vous être plus précis svp... Pourquoi cela ne le fait pas pour les jours par exemple ?
    Et d'ou sortes ces notations
    <?
    setlocale (LC_TIME, 'fr_FR');
    print strftime("%A %d %B %Y %T");
    ?>
    Je n'avais jamais vu ça avant...

  • auteur

    "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

  • auteur

    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");  	}  }

  • auteur

    à quel endroit doit on copier cette fonction? merci

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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

?>

@+

Reply
réponses:
  • auteur

    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

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed