Discussion:
php : conversion datetime en francais ???
(trop ancien pour répondre)
Dominique Ottello
2011-08-30 22:48:34 UTC
Permalink
j'ai besoin d'afficher des datetimes avec php, dans ma base le format
Tue, 05 Jul 2011 15:37:49 +0200
je préférerais avoir ça en french )))
En français !

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)

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');
--
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
Une Bevue
2011-08-31 12:50:03 UTC
Permalink
Post by Dominique Ottello
En français !
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)
Il se peut que le résultat de strftime() soit iso-8859-1 alors que l'on
souhaite obtenir de l'utf-8
OUI, oui, merci beaucoup, c'est réglé.
En fait dans mon cas :
Mac OS X 10.4.11
Apache 2
php 5.3.6
strftime() me donne un résultat en utf-8 )))

comment aurais-je pu savoir par avance (info.php ???) que la réponse
serait dans cet encodage ???

mon info.php est là :
<http://cjoint.com/11au/AHFhkcKDWPG.htm>
ou là (en IPv6 mais mon "serveur", un portable, se balade alors
l'adresse change) :
<http://[2a01:e35:8a4f:d5d0:230:65ff:fe02:75b9]/info.php>
--
« Il n'existe que deux choses infinies, l'univers et
la bêtise humaine... mais pour l'univers, je n'ai pas de
certitude absolue. »
(Albert Einstein)
Olivier Miakinen
2011-08-31 14:04:25 UTC
Permalink
Post by Une Bevue
Post by Dominique Ottello
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)
Il se peut que le résultat de strftime() soit iso-8859-1 alors que l'on
souhaite obtenir de l'utf-8
OUI, oui, merci beaucoup, c'est réglé.
Mac OS X 10.4.11
Apache 2
php 5.3.6
strftime() me donne un résultat en utf-8 )))
comment aurais-je pu savoir par avance (info.php ???) que la réponse
serait dans cet encodage ???
La réponse ne se trouve pas dans PHP, car il ne fait qu'utiliser la
fonction strftime() de la libc.

Voir par exemple :
http://linux.die.net/man/3/strftime

Et pour l'influence du LC_TIME sur le format retourné par strftime() :
http://linux.die.net/man/3/setlocale

Je pense que le résultat dépend des systèmes, mais il est possible
que tu puisses forcer utf-8 ou Latin-1 en écrivant par exemple
setlocale(LC_TIME,'fr_FR.utf8');
ou
setlocale(LC_TIME,'fr_FR.latin1');
au lieu de
setlocale(LC_TIME,'fr_FR');

En tout cas, une seule chose est sûre, c'est que PHP n'a strictement
aucun contrôle là-dessus. Si tu veux plus d'infos sur les valeurs
possibles, je te suggère de t'adresser plutôt à un forum sur MacOS-X.

Cordialement,
--
Olivier Miakinen
Une Bevue
2011-09-01 07:44:43 UTC
Permalink
Post by Olivier Miakinen
La réponse ne se trouve pas dans PHP, car il ne fait qu'utiliser la
fonction strftime() de la libc.
OK, je vois.
Post by Olivier Miakinen
http://linux.die.net/man/3/setlocale
Ah oui, c'est vieux ça, c'est aussi utilisé par Perl.
Post by Olivier Miakinen
Je pense que le résultat dépend des systèmes, mais il est possible
que tu puisses forcer utf-8 ou Latin-1 en écrivant par exemple
setlocale(LC_TIME,'fr_FR.utf8');
ou
setlocale(LC_TIME,'fr_FR.latin1');
au lieu de
setlocale(LC_TIME,'fr_FR');
En tout cas, une seule chose est sûre, c'est que PHP n'a strictement
aucun contrôle là-dessus.
OK merci c'est le point important.
--
« L'amour est la sagesse du fou et la folie du sage. »
(Samuel Johnson)
Vincent
2011-08-31 22:56:52 UTC
Permalink
Post by Dominique Ottello
j'ai besoin d'afficher des datetimes avec php, dans ma base le format
Tue, 05 Jul 2011 15:37:49 +0200
je préférerais avoir ça en french )))
En français !
Effectuer la conversion par strftime()
Je précise que j'avais fait une réponse en php.
On n'a pas toujours accès à la configuration des locales sur un serveur
distant (hébergement).
Continuer la lecture sur narkive:
Loading...