php : conversion datetime en français ???
Le
unbewusst.sein
comme le groupe "fr.comp.lang.php" semnle mortibus, je poste ici au cas
où
j'ai besoin d'afficher des datetimes avec php, dans ma base le format
est ISO, je converti pour obtenir :
Tue, 05 Jul 2011 15:37:49 +0200
je préférerais avoir ça en french )))
il faut le faire soi même ou bien existe t'il une manip, à partir de
locale ou autre qui converti dans la langue par défaut de la bécanne ???
--
« L'humanité qui devrait avoir six mille ans d'expérience,
retombe en enfance à chaque génération. »
(Tristan Bernard)
où
j'ai besoin d'afficher des datetimes avec php, dans ma base le format
est ISO, je converti pour obtenir :
Tue, 05 Jul 2011 15:37:49 +0200
je préférerais avoir ça en french )))
il faut le faire soi même ou bien existe t'il une manip, à partir de
locale ou autre qui converti dans la langue par défaut de la bécanne ???
--
« L'humanité qui devrait avoir six mille ans d'expérience,
retombe en enfance à chaque génération. »
(Tristan Bernard)

Poser une question


Kekchozcomssa ?
<?php
//on récupère le jour, le mois et l'année grâce à la fonction date()
$jour = date("d");
$mois = date("n");
$annee = date("Y");
$joursemaine = date("w");
//on crée un tableau à une dimension contenant les noms de mois
$moisfrancais = array ( 1 => "Janvier", "Février", "Mars", "Avril",
"Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre",
"Décembre");
$joursemainefrancais = array (0 => "Dimanche", "Lundi", "Mardi",
"Mercredi", "Jeudi", "Vendredi", "Samedi");
// 1=> indique que le tableau commence à 1 (alors qu'un tableau commence
par défaut à 0)
//affichage de la date
echo "<br />";
echo "Nous sommes le : ";
echo "$joursemainefrancais[$joursemaine] " ;
echo "$jour ";
echo "$moisfrancais[$mois] ";
echo "$annee ";
?>
ah oui merci beaucoup donc, si j'ai bien compris, ça n'existe pas en
builtin comme dans d'autres langages.
bon, j'ai légérement modifier ton code pour utiliser une function :
<?php
header('Content-type: text/html; charset=utf-8');
function date2fr($adate) {
$moisfrancais = array ( 1 => "Janvier", "Février", "Mars",
"Avril", "Mai", "Juin", "Juillet", "Août",
"Septembre", "Octobre", "Novembre", "Décembre");
$joursemainefrancais = array (0 => "Dimanche", "Lundi", "Mardi",
"Mercredi", "Jeudi", "Vendredi", "Samedi");
$jour=$adate->format('d');
$mois=$moisfrancais[$adate->format('n')];
$annee=$adate->format('Y');
$joursemaine=$joursemainefrancais[$adate->format('w')];
return "$joursemaine $jour $mois $annee à
".$adate->format('H')."H".$adate->format('i:s');
}
function isodate2fr($isodatestring){
return date2fr(new DateTime($isodatestring));
}
$ctime=new DateTime('2011-07-05T15:37:49+02:00');
echo "$ctime=new DateTime('2011-07-05T15:37:49+02:00');<br />";
echo date2fr($ctime)."<br />";
echo "<br />";
echo "Créé le ".isodate2fr('2011-07-05T15:37:49+02:00').".<br />";
?>
ce qui me gène est que les tableaux $moisfrancais et
$joursemainefrancais sont recréés à chaque appel de la function
date2fr($adate) est)ce que ça peut se mettre en global ou qqc du genre ?
--
« Le vrai problème avec les menteurs est que l'on ne peut jamais
être certain qu'ils ne vont pas dire la vérité. »
(Kingsley Amis)
Bonjour Monsieur
D'après mes cours d'Informatique qui datent de Mathusalem, les
variables locales à une fonction, sont placées dans la pile, qui elle
même, est dépilée à chaque retour de la fonction.
Donc, d'une part ces variables locales, n'existent strictement que
durant l'appel à la fonction. D'autre part, l'accès à ces variables
locales, se faisant dans la pile, sont plus rapides que des accès à des
variables de type externe, ou static.
Maintenant, est-ce que ce raisonnement est valable pour un langage
interprété comme le php... Je ne sais pas.
En fait... Je ne sais même pas, si le php est réellement uniquement
interprété, ou bien fait l'objet d'une compilation "just-in-time", ou
même une précompilation suivie d'une interprétation, comme c'est le cas
en Java.
Quant à Java, je suis plus que profondément nul en Java, vu que je
n'ai jamais pratiqué. ;)
La Javanaaaaaiiiiiisssseeee....
Bien à vous.
Amicalement.
Jean François Ortolo
--
Visitez mon site gratuit donnant des Statistiques,
Pronostics et Historiques Graphiques
sur les Courses de Chevaux:
http://www.pronostics-courses.fr
J'avais donné une réponse, avec crosspost sur fr.comp.lang.php et fu2
sur dito, mais, a priori, ce n'est pas passé. Je republie uniquement
ici.
Effectuer la conversion par strftime()
http://fr2.php.net/manual/fr/function.strftime.php
en faisant un /setlocale(LC_TIME,'fr_FR);/ juste avant. (1) (2)
Il se peut que le résultat de strftime() soit iso-8859-1 alors que l'on
souhaite obtenir de l'utf-8, donc ;
$date_format = '%d %B %Y';
setlocale(LC_TIME,'fr_FR'');
$date = iconv('ISO-8859-1',
'UTF-8//TRANSLIT//IGNORE',strftime($date_format, $timestamp));
(1) La valeur 'fr_FR' peut être différente en fonction des serveurs,
pour s'affranchir de cet éventuelle problème, on peut mettre plusieurs
valeurs, la « bonne » valeur sera prise par le serveur :
setlocale(LC_TIME,'fr_FR','french','French_France.1252','fr_FR.ISO8859-1','fra');
(2) Pourquoi faire un setlocale() juste avant et pas une bonne fois pour
toutes ?
Comme il est écrit dans la documentation :
L'information locale est maintenue par processus, non par thread. Si
vous faites fonctionner PHP sur un serveur multi-threadé comme IIS ou
Apache sur Windows, vous pourriez obtenir des changements soudains des
configurations locales pendant qu'un script fonctionne, même si celui-ci
n'appelle jamais la fonction setlocale(). Ceci survient à cause des
autres scripts qui fonctionnent dans des threads différents du même
processus. Ces scripts changent les configurations locales dans le
processus au complet en utilisant la fonction setlocale().
--
Il vaut mieux ignorer où l'on est, et savoir qu'on l'ignore, que de se
croire avec confiance où l'on n'est pas. Jean Dominique Cassini.
Technologie aéronautique - http://ottello.net - Les anciens de Vilgénis
c'est quoi "dito" ???
OK, super, merci beaucoup pour toutes ces précisions !
Je n'ai pas iconv avec mon php5 mais je suppose que étant une extension,
je peux l'installer après coup, comme je viens de le faire pour xsl ???
pas mal cette citation, je l'ajoute aux miennes ;-)
--
« Il n'y a pas de hasards, il n'y a que des rendez-vous. »
(Paul Eluard)