Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[Mac OS X versus Ubuntu] LC_TIME et strftime

14 views
Skip to first unread message

Une Bévue

unread,
Sep 19, 2011, 8:59:15 AM9/19/11
to
je viens de migrer un site d'Ubuntu vers Mac OS X, j'utilise Apache2
conjointement à php5.
Sur Ubuntu la version de php5 n'est pas exactement la même :
PHP Version 5.3.5-1ubuntu7.2
<http://[2a01:e35:8a4f:d5d0:212:f0ff:fe6a:a07b]/info.php>

de celle sur Mac OS X Lion :
PHP Version 5.3.6
<http://[2a01:e35:2e2d:9ef0:221:e9ff:fee4:2559]/info.php>

et j'ai un "problème" avec sfrtime.
sur Ubuntu j'ai mis :
setlocale(LC_TIME,'fr_FR.utf8');// OK sur Ubuntu
date_default_timezone_set('Europe/Paris');

et j'obtiens la date en français avec ma fonction :
function isodate2fr_FR($isodatestring){
$date_format='%A %d %B %Y à %Hh %M:%S';
$atime=new DateTime($isodatestring);
return strftime($date_format, $atime->format('U'));
}

sur Mac OS X, comme sous Ubuntu la variable d'environnement $LC_TIME est
vide :
imyt% echo $LC_TIME

imyt%

quelqu'un aurait'il un tuyau pour obtenir la date en français sur Mac OS
X Lion ?

j'ai posté le même message, aux typos près, sur "fr.comp.lang.php" qui
ne réagit + beaucoup...
--
« Les femmes préfèrent les hommes qui les prennent sans les comprendre,
aux hommes qui les comprennent sans les prendre. »
(Marcel Prévost)

denisb

unread,
Sep 19, 2011, 9:20:43 AM9/19/11
to
Une Bévue <unbewus...@fai.invalid> wrote:
> echo $LC_TIME

c'est une constante plutôt non ?
-> echo LC_TIME;

(sans le $)

--
@@@@@
E -00 comme on est very beaux dis !
' `) /
|\_ =="

Une Bévue

unread,
Sep 19, 2011, 9:55:05 AM9/19/11
to
denisb <ne...@no-log.org> wrote:

> c'est une constante plutôt non ?
> -> echo LC_TIME;
>
> (sans le $)

ben oui, c'est une "constante", une variable d'environnement, évidemment
:
-> echo LC_TIME donne :

imyt% echo LC_TIME
LC_TIME
imyt%


tout comme "echo toto" :
imyt% echo toto
toto
imyt%


)))

SAM

unread,
Sep 19, 2011, 12:07:17 PM9/19/11
to
Le 19/09/11 14:59, Une Bévue a écrit :
> je viens de migrer un site d'Ubuntu vers Mac OS X, j'utilise Apache2
> conjointement à php5.
> Sur Ubuntu la version de php5 n'est pas exactement la même :
> PHP Version 5.3.5-1ubuntu7.2
> <http://[2a01:e35:8a4f:d5d0:212:f0ff:fe6a:a07b]/info.php>
>
> de celle sur Mac OS X Lion :
> PHP Version 5.3.6
> <http://[2a01:e35:2e2d:9ef0:221:e9ff:fee4:2559]/info.php>
>
> et j'ai un "problème" avec sfrtime.

heu ...
10.6.8 --->

<?php
setlocale(LC_TIME,'fr_FR');// OK sur Ubuntu.utf8
date_default_timezone_set('Europe/Paris');
echo "En français ".strftime('%A %d %B %Y à %Hh %M:%S')."<br />";
?>

me donne :
En français Lundi 19 septembre 2011 à 17h 55:21

mais tout ça me semble un brin capricieux
très peu de tolérance quant aux " et ' et ( ) et .



echo "En français " . strftime("%A %d %B %Y"). " à : ".strftime("%Hh
%M:%S"). "<br />";

sur 1 ligne fonctionne aussi

--
Stéphane Moriaux avec/with iMac-intel

Une Bévue

unread,
Sep 19, 2011, 1:14:01 PM9/19/11
to
SAM <stephanemor...@wanadoo.fr.invalid> wrote:

> <?php
> setlocale(LC_TIME,'fr_FR');// OK sur Ubuntu.utf8
> date_default_timezone_set('Europe/Paris');
> echo "En français ".strftime('%A %d %B %Y à %Hh %M:%S')."<br />";
> ?>
>
> me donne :
> En français Lundi 19 septembre 2011 à 17h 55:21
>
> mais tout ça me semble un brin capricieux
> très peu de tolérance quant aux " et ' et ( ) et .

Bon, merci beaucoup, ça roule aussi chez moi, j'ai simplement supprimé
le ".utf8"...
ça marche dons avec :
setlocale(LC_TIME,'fr_FR');
date_default_timezone_set('Europe/Paris');
bon, je ne vais pas chercher le pourquoi du comment, hein...

Dominique Ottello

unread,
Sep 19, 2011, 1:53:44 PM9/19/11
to
unbewus...@fai.invalid (Une Bévue) écrivait :

> setlocale(LC_TIME,'fr_FR');
> date_default_timezone_set('Europe/Paris');
> bon, je ne vais pas chercher le pourquoi du comment, hein...

Bonjour,

Suivant les systèmes et les serveurs et leurs différents paramètres, on
ne peut pas savoir quelle sera la « valeur » acceptée par setlocale(),
car les différentes plates-formes possèdent des conventions de nommages
différentes.

Je pense qu'il est préférable de mettre plusieurs possibilités, le
serveur prendra celle qui lui convient, par exemple :

setlocale(LC_TIME, 'fr_FR.utf8', 'fr_FR.iso8859-1', 'fr_FR', 'french',
'French_France.1252', 'fra');

Le serveur les vérifiera dans l'ordre et prendra la première qui lui
convient.
On peut savoir laquelle est prise en compte par un
$loc_fr = setlocale(LC_TIME, 'fr_FR.utf8', 'fr_FR.iso8859-1', 'fr_FR',
'french', 'French_France.1252', 'fra');
echo "L'identifiant temps du français sur ce système est '$loc_fr'";

D'autre part, comme expliqué dans la documentation de setlocale(), il
est conseillé d'effectuer cette instruction juste avant d'en avoir
besoin, et pas une fois pour toutes, il serait donc plus pertinent :

function isodate2fr_FR($isodatestring){
$date_format='%A %d %B %Y à %Hh %M:%S';
$atime=new DateTime($isodatestring);
setlocale(LC_TIME, 'fr_FR.utf8', 'fr_FR.iso8859-1',
'fr_FR', 'french', 'French_France.1252', 'fra');
return strftime($date_format, $atime->format('U'));
}

On ne peut pas non plus savoir avec certitude quel sera le codage
retourné par strftime() : iso-8859-1, utf8, CP1252, autre...
--
Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi
Technologie aéronautique : http://aviatechno.free.fr (http://ottello.net)
Concorde dans la presse de 1965 à 2003 : http://le.pointu.free.fr

Une Bévue

unread,
Sep 19, 2011, 2:04:03 PM9/19/11
to
Dominique Ottello <air.i...@fra.fr.invalid> wrote:

Bonsoir !

> Suivant les systèmes et les serveurs et leurs différents paramètres, on
> ne peut pas savoir quelle sera la « valeur » acceptée par setlocale(),
> car les différentes plates-formes possèdent des conventions de nommages
> différentes.
>
> Je pense qu'il est préférable de mettre plusieurs possibilités, le
> serveur prendra celle qui lui convient, par exemple :
>
> setlocale(LC_TIME, 'fr_FR.utf8', 'fr_FR.iso8859-1', 'fr_FR', 'french',
> 'French_France.1252', 'fra');

OK, pigé !

> Le serveur les vérifiera dans l'ordre et prendra la première qui lui
> convient.
> On peut savoir laquelle est prise en compte par un
> $loc_fr = setlocale(LC_TIME, 'fr_FR.utf8', 'fr_FR.iso8859-1', 'fr_FR',
> 'french', 'French_France.1252', 'fra');
> echo "L'identifiant temps du français sur ce système est '$loc_fr'";
>
> D'autre part, comme expliqué dans la documentation de setlocale(), il
> est conseillé d'effectuer cette instruction juste avant d'en avoir
> besoin, et pas une fois pour toutes, il serait donc plus pertinent :

Ah, d'accord, je changerai ça, c'est important !

> function isodate2fr_FR($isodatestring){
> $date_format='%A %d %B %Y à %Hh %M:%S';
> $atime=new DateTime($isodatestring);
> setlocale(LC_TIME, 'fr_FR.utf8', 'fr_FR.iso8859-1',
> 'fr_FR', 'french', 'French_France.1252', 'fra');
> return strftime($date_format, $atime->format('U'));
> }
>
> On ne peut pas non plus savoir avec certitude quel sera le codage
> retourné par strftime() : iso-8859-1, utf8, CP1252, autre...

ça c'est plutôt ennuyeux, coup de pot, il me semble que c'est utf-8 sur
mac os...

merci beaucoup pour toutes ces précisions !!!

Une Bévue

unread,
Sep 19, 2011, 2:11:12 PM9/19/11
to
Dominique Ottello <air.i...@fra.fr.invalid> wrote:

> $loc_fr = setlocale(LC_TIME, 'fr_FR.utf8', 'fr_FR.iso8859-1', 'fr_FR',
> 'french', 'French_France.1252', 'fra');
> echo "L'identifiant temps du français sur ce système est '$loc_fr'";

Euh, ça dépend --AUSSI-- de l'ordre dans lequel on met ces strings :

<?php
header('Content-type: text/html; charset=utf-8');
$loc_fr = setlocale(LC_TIME, 'fr_FR.utf8', 'fr_FR.iso8859-1',
'fr_FR', 'french', 'French_France.1252', 'fra');
echo "L'identifiant temps du français sur ce système est '$loc_fr'<br
/>";
$loc_fr = setlocale(LC_TIME, 'fr_FR', 'fr_FR.utf8',
'fr_FR.iso8859-1', 'french', 'French_France.1252', 'fra');
echo "L'identifiant temps du français sur ce système est '$loc_fr'";
?>

dans le 1ier cas 'fr_FR.iso8859-1' est avant 'fr_FR' ;
dans le second, 'fr_FR' est en 1ier; résultat sur mac os x lion :
L'identifiant temps du français sur ce système est 'fr_FR.iso8859-1'
L'identifiant temps du français sur ce système est 'fr_FR'


est aussi, je viens juste de remarquer que sur mac os x c'est
'fr_FR.utf-8' qui est pris en compte, mais pas 'fr_FR.utf8' (ie. sans le
"-" entre 'utf' et "!")...
0 new messages