Originalmente publicado por
modernclics
Funciono perfecto, gracias.
Estuve investigando el uso de TimeZone pero no logro cambiar la fecha a otra zona.
Esto es lo que hice y no funciona:
Código:
public void actualizarHora () {
calendario=calendario.getInstance();
calendario.setTimeZone(tz.getTimeZone("Japan"));
hora=calendario.getTime();
fecha=df.format(hora);
}
Me sigue dando la hora local.
Voy a seguir investigando, igual agradeceria que me den una mano

.

El tema pasa por lo siguiente: la "zona" no es algo que tenga que ver un Objeto Date sino que tiene que ver con un Calendario o un DateFormat que da formato a la hora.
mirá el ejemplo siguiente:
Código:
Calendar calendario = Calendar.getInstance();
calendario.setTimeZone(xxx);
Date hora = calendario.getTime();
Si vos a un Calendar le "seteas" un TimeZone con setTimeZone, todo bien, pero luego si hace getTime ese objeto Date que te devuelve no tiene nada que ver con zonas, representa una fecha y hora en un formato absoluto.
Por esto el código que vos pusiste no hace lo que pretendés.
Si vos lo que necesitás es poder obtener información independiente de hora, minuto, etc según el Locale, tenés que hacer como pusiste de ejemplo, pero no usando el Date que te devuelve getTime, de la siguiente forma como ej:
Código:
Calendar calendarioLocal = Calendar.getInstance();
TimeZone tzJapon = TimeZone.getTimeZone("Japan");
Calendar calendarioJapon = Calendar.getInstance(tzJapon);
int hl = calendarioLocal.get(Calendar.HOUR_OF_DAY);
int ml = calendarioLocal.get(Calendar.MINUTE);
int sl = calendarioLocal.get(Calendar.SECOND);
System.out.println("Local: hora: " + hl + " minutos: " + ml +
" segundos:" + sl);
int hj = calendarioJapon.get(Calendar.HOUR_OF_DAY);
int mj = calendarioJapon.get(Calendar.MINUTE);
int sj = calendarioJapon.get(Calendar.SECOND);
System.out.println("Japón: hora: " + hj + " minutos: " + mj +
" segundos:" + sj);
Si lo que vos querés hacer es REPRESENTAR esa hora según diferentes TimeZones, lo que podés hacer es indicarle a un DateFormat el TimeZone para que use, de la siguiente manera:
Código:
Calendar calendario = Calendar.getInstance();
DateFormat df = DateFormat.getTimeInstance();
TimeZone tzJapon = TimeZone.getTimeZone("Japan");
Date horaLocal = calendario.getTime();
System.out.println(df.format(horaLocal));
df.setTimeZone(tzJapon);
System.out.println(df.format(horaLocal));
Espero que te sea de ayuda, cualquier duda preguntá!!