OVH Cloud OVH Cloud

php : conversion datetime en français ???

16 réponses
Avatar
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)

6 réponses

1 2
Avatar
Dominique Ottello
(Une Bévue) écrivait :

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


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
Avatar
Dominique Ottello
(Une Bévue) écrivait :

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


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
Avatar
unbewusst.sein
Dominique Ottello wrote:

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)
Avatar
Olivier Miakinen
Le 31/08/2011 14:50, Une Bevue a écrit :

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



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
Avatar
Vincent
Le 31/08/2011 00:48, Dominique Ottello a écrit :
(Une Bévue) écrivait :
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 )))


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).
Avatar
unbewusst.sein
Olivier Miakinen <om+ wrote:

La réponse ne se trouve pas dans PHP, car il ne fait qu'utiliser la
fonction strftime() de la libc.



OK, je vois.

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



Ah oui, c'est vieux ça, c'est aussi utilisé par Perl.

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)
1 2