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

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

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

7 réponses

Avatar
Sébastien Kirche
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
Avatar
Jacques L'helgoualc'h
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
Avatar
Sébastien Kirche
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
Avatar
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 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.
Avatar
Vincent Belaïche
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
"

Avatar
Jacques L'helgoualc'h
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
Avatar
Asgeir
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 writes:
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