Il mio server mi invia fusi orari del formato "America/Los Angeles". Sul client, ho un tempo che ho bisogno di visualizzare in quel fuso orario. La risposta sarà "PST" o "PDT", a seconda dell'ora legale all'ora prestabilita. Come faccio quella conversione?Conversione del fuso orario "America/Los Angeles" in "PST" o "PDT" in Java ME
Sono su Java ME (Blackberry 4.7, per essere precisi), quindi non posso usare Joda Time.
Avrò bisogno di fare questo calcolo rapidamente per un sacco di date (ma solo un fuso orario), quindi non posso semplicemente avere il server mandarmi un offset, perché l'offset potrebbe cambiare a seconda della data.
Modifica: Lasciatemi ricomporre il problema, perché sembra esserci un po 'di confusione. Mi viene assegnato un nome zonainfo e una data. Voglio sapere l'offset da GMT in quel fuso orario a quella data. La risposta varierà in base all'ora legale.
Come bonus aggiuntivo, mi piacerebbe ottenere il TLA per mostrare all'utente (ad esempio, "PST" o "PDT"), ma questo è secondario.
Soluzione: Riassumo la soluzione qui, perché non è molto chiara dalle risposte seguenti. Questo fa in sostanza quello che mi serve, in 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)));
A causa di [questa risposta] (https://stackoverflow.com/a/31171284/659077), "Amrica/Los_angeles" e "PDT" hanno lo stesso offset! –