Envoyé par
biboo_
Salut,
Effectivement je me pense m'être fait avoir. J'ai loggé la locale mais c'est celle du client (il me retourne FR).
Seulement, sur le serveur Solaris, la commande "locale" LC_TIME" me retourne "en_US" (j'imagine que c'est cet attribut qui compte).
En fait, au démarrage, la JVM détermine une Locale par défaut, une seule, et elle s'en sert pour tout : langue, pays, formats de nombres et dates, premier jour de la semaine...
Une Locale n'est composée que de 3 composants : pays, langue, variante (variante est inutilisée la plupart du temps.)
Autrement dit, le jour de la semaine, le format des nombres, ce n'est pas stocké dans la Locale : c'est déduit du pays et de la langue indiqués par la Locale.
Sous Unix, la Locale par défaut est déterminée par $LANG, pas par $LC_TIME (qui ne s'occupe que des questions de temps.)
En tout cas par défaut, mais on peut démarrer une JVM en lui indiquant une Locale par défaut.
Le seul moyen d'être sûr, c'est de regarder ce que renvoie
ou
Calendar.getInstance().getFirstDayOfWeek()
(en sachant que 1 est le dimanche, 2 est le lundi...)
Note : en fait, ça c'est la méthode pour comprendre d'où venait le problème.
Mais pour le résoudre, il faut faire ce que dit tchize_ : forcer le premier jour de la semaine avec setFirstDayOfWeek(Calendar.MONDAY)
et forcer aussi la time zone, pour les mêmes raisons.
Partager