Mi servidor me envía zonas horarias del formato "América/Los Ángeles". En el cliente, tengo un tiempo que necesito mostrar en esa zona horaria. La respuesta será "PST" o "PDT", dependiendo del horario de verano en el momento dado. ¿Cómo hago esa conversión?La conversión de la "América/Los Ángeles" zona horaria a "PST" o "PDT" en Java ME
Estoy en Java ME (Blackberry 4.7, para ser exactos), por lo que no se puede utilizar Joda Time.
Necesitaré hacer este cálculo rápidamente para muchas fechas (pero solo una zona horaria), así que no puedo simplemente hacer que el servidor me envíe un desplazamiento, porque el desplazamiento puede cambiar según la fecha.
Edit: Permítanme volver a plantear el problema, porque parece haber cierta confusión. Me dieron un nombre de zona y una fecha. Quiero saber el desplazamiento desde GMT en esa zona horaria en esa fecha. La respuesta variará según el horario de verano.
Como un beneficio adicional, me gustaría obtener el TLA para mostrar al usuario (es decir, "PST" o "PDT"), pero eso es secundario.
Solución: voy a resumir aquí la solución, ya que no es muy claro a partir de las respuestas a continuación. Esto básicamente hace lo que necesito, 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)));
Debido a [esta respuesta] (https://stackoverflow.com/a/31171284/659077), 'Amrica/Los_Angeles' y 'PDT' han compensado igual! –