J'ai ce problème étrange, lorsque je crée un calendrier avec un paramètre régional, la TimeZone revient simplement à la locale
public void start(Locale locale){
String s = locale.getDisplayName();
System.err.println(s);
Calendar c = new GregorianCalendar(locale);
System.err.println(c.getTimeZone());
}
Et voici la sortie:
español (Argentina)
Sun.util.calendar.ZoneInfo[id="Europe/Bucharest", //etc more useless date here....
Comment puis-je obtenir l'heure appropriée à partir d'un lieu spécifique?
La réponse courte: vous ne pouvez pas.
La réponse longue: il n'existe pas de "fuseau horaire approprié pour un lieu". C'est simplement parce qu'il y a quelques pays qui ont plus d'un fuseau horaire (par exemple les États-Unis). Le fuseau horaire est un concept différent.
Quoi qu'il en soit, vous cherchez à résoudre votre problème. Je suppose que vous écrivez une application Web et vous voyez que le fuseau horaire revient au serveur par défaut. Voilà une situation typique. Locale.getDefault()
et TimeZone.getDefault()
renverront des informations relatives au serveur. La JVM n'a aucun moyen de connaître le "bon" fuseau horaire. Alors, que pouvez-vous y faire?
DateFormat
et il convertira automatiquement le fuseau horaire.Parmi ces trois choix possibles, j'opte toujours pour le numéro 1. En mettant des informations de fuseau horaire dans le profil de l'utilisateur, vous savez avec certitude quel est son fuseau horaire préféré, quel que soit son navigateur Web actuel, etc. Veuillez garder à l'esprit que certains utilisateurs voudront peut-être utiliser votre application tout en visitant d'autres pays ...