[Mac OS X versus Ubuntu] LC_TIME et strftime

Le
unbewusst.sein
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)
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
newdb
Le #23774181
Une Bévue
echo $LC_TIME



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

(sans le $)

--
@@@@@
E -00 comme on est very beaux dis !
' `) /
|_ =="
unbewusst.sein
Le #23774191
denisb
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%


)))
--
« Les femmes préfèrent les hommes qui les prennent sans les comprendre,
aux hommes qui les comprennent sans les prendre. »
(Marcel Prévost)
SAM
Le #23774441
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

de celle sur Mac OS X Lion :
PHP Version 5.3.6

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
unbewusst.sein
Le #23774641
SAM
<?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...
--
« Les femmes préfèrent les hommes qui les prennent sans les comprendre,
aux hommes qui les comprennent sans les prendre. »
(Marcel Prévost)
Dominique Ottello
Le #23774911
(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
unbewusst.sein
Le #23774901
Dominique Ottello
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 !!!
--
« Les femmes préfèrent les hommes qui les prennent sans les comprendre,
aux hommes qui les comprennent sans les prendre. »
(Marcel Prévost)
unbewusst.sein
Le #23774891
Dominique Ottello
$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 "!")...


--
« Les femmes préfèrent les hommes qui les prennent sans les comprendre,
aux hommes qui les comprennent sans les prendre. »
(Marcel Prévost)
Publicité
Poster une réponse
Anonyme