Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[Mac OS X versus Ubuntu] LC_TIME et strftime

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

7 réponses

Avatar
newdb
Une Bévue wrote:
echo $LC_TIME



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

(sans le $)

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


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

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

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


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