La conversion de la “les etats-unis/Los Angeles” fuseau horaire “PST” ou “PDT” dans Java ME

Mon serveur m'envoie des fuseaux horaires au format "Amérique/Los Angeles". Sur le client, j'ai un moment que j'ai besoin d'afficher dans ce fuseau horaire. La réponse sera "PST" ou "PDT", en fonction de l'heure d'été à l'heure. Comment dois-je faire la conversion?

Je suis sur Java ME (Blackberry 4.7, pour être précis), donc je ne peux pas utiliser Joda Time.

J'ai besoin pour faire ce calcul rapidement pour un grand nombre de dates (mais un seul fuseau horaire), donc je ne peux pas juste le serveur m'envoyer un décalage, parce que le décalage peut changer en fonction de la date.

Edit: Permettez-moi de reformuler le problème, car il semble y avoir une certaine confusion. Je me suis donné un zoneinfo nom et une date. Je veux savoir le décalage entre l'heure GMT dans ce fuseau horaire à cette date. La réponse variera en fonction de l'heure d'été.

Comme un bonus supplémentaire, je voudrais obtenir la PREMIÈRE à montrer à l'utilisateur (c'est à dire, "PST" ou "PDT"), mais c'est secondaire.

Solution:, je vais résumer ici la solution, car il n'est pas très clair dans les réponses ci-dessous. De ce fait essentiellement ce dont j'ai besoin, en J2ME:

TimeZone zone = TimeZone.getTimeZone("America/Los_Angeles");
Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(zone);

calendar.setTime(new Date(2011, 1, 1, 12, 0, 0));      
System.out.println(zone.getOffset(1, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), calendar.get(Calendar.DAY_OF_WEEK), calendar.get(Calendar.MILLISECOND)));
calendar.setTime(new Date(2011, 6, 1, 12, 0, 0));
System.out.println(zone.getOffset(1, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), calendar.get(Calendar.DAY_OF_WEEK), calendar.get(Calendar.MILLISECOND)));
En raison de cette réponse, 'Amrica/Los_angeles' et 'HAP' égalité de décalage!

OriginalL'auteur Dirk Groeneveld | 2011-02-01