Date et heure en sélectionnant une locale de mon choix

Le
Vincent Belaïche
Bonjour,

Une petite question d'Elisp sur laquelle je bute.
Si j'évalue

(format-time-string "%k:%M:%S %a %e %b %Y" (current-time))

Ca renvoie la chaîne de caractères :

20:58:49 dim. 22 févr. 2009


Fort bien, simplement je voudrais pouvoir sélectionner la locale pour l'avoir
en anglais.

20:58:49 Sun 22 Feb 2009

Quelqu'un sait-il comment faire ?

Vincent.
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
Sébastien Kirche
Le #21771471
Le 22 février 2009 à 21:01, Vincent Belaïche a formulé :

Bonjour,

Une petite question d'Elisp sur laquelle je bute.
Si j'évalue

(format-time-string "%k:%M:%S %a %e %b %Y" (current-time))

Ca renvoie la chaîne de caractères :

20:58:49 dim. 22 févr. 2009


Fort bien, simplement je voudrais pouvoir sélectionner la locale pour
l'avoir en anglais.

20:58:49 Sun 22 Feb 2009

Quelqu'un sait-il comment faire ?



Il me semblait l'avoir fait en jouant avec setenv et la locale LC_TIME
mais en cherchant dans le manuel j'ai trouvé mieux : system-time-locale.
Donc :
(let ((system-time-locale "C"))
(format-time-string "%k:%M:%S %a %e %b %Y" (current-time)))

retourne
"21:18:39 Sun 22 Feb 2009"

On doit pouvoir spécifier la locale de son choix genre "en_US.ISO-8859-1",
mais je n'arrive pas à utiliser autre chose que "C" mes essais
retournent la version française (sur un linux)...

HTH.
--
Sébastien Kirche
Jacques L'helgoualc'h
Le #21771461
Le 22-02-2009, Vincent Belaïche a écrit :
Bonjour,



bonsoir,

Une petite question d'Elisp sur laquelle je bute.
Si j'évalue

(format-time-string "%k:%M:%S %a %e %b %Y" (current-time))

Ca renvoie la chaîne de caractères :

20:58:49 dim. 22 févr. 2009


Fort bien, simplement je voudrais pouvoir sélectionner la locale pour l'avoir
en anglais.

20:58:49 Sun 22 Feb 2009

Quelqu'un sait-il comment faire ?



Je triche (après qq M-x apropos tout de même :)

(shell-command-to-string "LC_ALL=en_GB date '+%k:%M:%S %a %e %b %Y'")
"21:29:52 Sun 22 Feb 2009
"

--
Jacques L'helgoualc'h
Sébastien Kirche
Le #21771451
Le 22 février 2009 à 21:26, Sébastien Kirche a formulé :

(let ((system-time-locale "C"))
(format-time-string "%k:%M:%S %a %e %b %Y" (current-time)))

retourne
"21:18:39 Sun 22 Feb 2009"

On doit pouvoir spécifier la locale de son choix genre
"en_US.ISO-8859-1", mais je n'arrive pas à utiliser autre chose que
"C" mes essais retournent la version française (sur un linux)...



J'ai trouvé pourquoi ça ne fonctionnait pas : les locales doivent être
installées *avant* de les utiliser :)
(voir du côté de dpkg-reconfigure locales sur une Debian pour pourvoir
utiliser autre chose que "C" ou sa propre locale)
--
Sébastien Kirche
Vincent Belaïche
Le #21771441
Ca marche chez moi aussi, et en mettant en_US ou C (j'ai une version CVS
23.0.60.1 2009-01-03).

Le pire c'est que j'avais déjà essayé ça en vain mais avec une autre machine
et une version d'Emacs plus ancienne...

Vincent.

Sébastien Kirche a écrit :
Le 22 février 2009 à 21:01, Vincent Belaïche a formulé :

Bonjour,

Une petite question d'Elisp sur laquelle je bute.
Si j'évalue

(format-time-string "%k:%M:%S %a %e %b %Y" (current-time))

Ca renvoie la chaîne de caractères :

20:58:49 dim. 22 févr. 2009


Fort bien, simplement je voudrais pouvoir sélectionner la locale pour
l'avoir en anglais.

20:58:49 Sun 22 Feb 2009

Quelqu'un sait-il comment faire ?



Il me semblait l'avoir fait en jouant avec setenv et la locale LC_TIME
mais en cherchant dans le manuel j'ai trouvé mieux : system-time-locale.
Donc :
(let ((system-time-locale "C"))
(format-time-string "%k:%M:%S %a %e %b %Y" (current-time)))

retourne
"21:18:39 Sun 22 Feb 2009"

On doit pouvoir spécifier la locale de son choix genre "en_US.ISO-8859-1",
mais je n'arrive pas à utiliser autre chose que "C" mes essais
retournent la version française (sur un linux)...

HTH.
Vincent Belaïche
Le #21771431
Salut,

Ton code n'est pas portable (ça suppose un shell bash, et je suis sous
MSWindows2000). Je préfère de loin ce que Sébastien a proposé.

Vincent.

Jacques L'helgoualc'h a écrit :
Le 22-02-2009, Vincent Belaïche a écrit :
Bonjour,



bonsoir,

Une petite question d'Elisp sur laquelle je bute.
Si j'évalue

(format-time-string "%k:%M:%S %a %e %b %Y" (current-time))

Ca renvoie la chaîne de caractères :

20:58:49 dim. 22 févr. 2009


Fort bien, simplement je voudrais pouvoir sélectionner la locale pour l'avoir
en anglais.

20:58:49 Sun 22 Feb 2009

Quelqu'un sait-il comment faire ?



Je triche (après qq M-x apropos tout de même :)

(shell-command-to-string "LC_ALL=en_GB date '+%k:%M:%S %a %e %b %Y'")
"21:29:52 Sun 22 Feb 2009
"

Jacques L'helgoualc'h
Le #21771421
Le 23-02-2009, Vincent Belaïche a écrit :
Salut,



salut,

Ton code n'est pas portable (ça suppose un shell bash, et je suis sous
MSWindows2000).



Ben, il existe des portages de shells décents du côté obscur...
(mais il te fallait plutôt celui de GNU date (en elisp (:P))).

Je préfère de loin ce que Sébastien a proposé.



Oui, moi aussi.
--
Jacques L'helgoualc'h
Asgeir
Le #21771411
Cela ne causera-t'il pas un problème de portabilité du code ?
En effet, personne n'installe les mêmes locales, donc un code se basant
sur des locales n'est pas portable d'un ordinateur à un autre, ni mà ªme
d'un système d'exploitation à un autre...

Vincent Belaïche
Ca marche chez moi aussi, et en mettant en_US ou C (j'ai une version
CVS 23.0.60.1 2009-01-03).

Le pire c'est que j'avais déjà essayé ça en vain mais avec une autre
machine et une version d'Emacs plus ancienne...

Vincent.

Sébastien Kirche a écrit :
Le 22 février 2009 à 21:01, Vincent Belaïche a formulà © :

Bonjour,

Une petite question d'Elisp sur laquelle je bute.
Si j'évalue

(format-time-string "%k:%M:%S %a %e %b %Y" (current-time))

Ca renvoie la chaîne de caractères :

20:58:49 dim. 22 févr. 2009


Fort bien, simplement je voudrais pouvoir sélectionner la locale p our
l'avoir en anglais.

20:58:49 Sun 22 Feb 2009

Quelqu'un sait-il comment faire ?



Il me semblait l'avoir fait en jouant avec setenv et la locale LC_TIME
mais en cherchant dans le manuel j'ai trouvé mieux : system-time-lo cale.
Donc :
(let ((system-time-locale "C"))
(format-time-string "%k:%M:%S %a %e %b %Y" (current-time)))

retourne "21:18:39 Sun 22 Feb 2009"

On doit pouvoir spécifier la locale de son choix genre "en_US.ISO-8 859-1",
mais je n'arrive pas à utiliser autre chose que "C" mes essais
retournent la version française (sur un linux)...

HTH.





--
Asgeir
Publicité
Poster une réponse
Anonyme