Android: convierte la fecha y la hora reales en milisegundos y otra zona horaria

Debo convertir la fecha y la hora reales a milisegundos y a otra zona horaria GMT+3 (mi zona horaria es GMT-2). Uso este código pero me devuelve la hora pero en mi zona horaria... ¿por qué?

Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT-3"));
cal.get(Calendar.DAY_OF_MONTH);
cal.get(Calendar.MONTH);
cal.get(Calendar.YEAR);
cal.get(Calendar.HOUR_OF_DAY);
cal.get(Calendar.MINUTE);
cal.get(Calendar.SECOND);
cal.get(Calendar.MILLISECOND);
long timez = cal.getTime().getTime();

preguntado el 03 de mayo de 12 a las 15:05

3 Respuestas

Necesitas usar SimpleDateFormat. El calendario siempre usa la zona horaria predeterminada configurada en su máquina. Aquí está ejemplo sobre cómo lograr esta funcionalidad con SimpleDateFormat.

contestado el 03 de mayo de 12 a las 15:05

Date date = new Date();
  DateFormat firstFormat = new SimpleDateFormat();
  DateFormat secondFormat = new SimpleDateFormat();
  TimeZone firstTime = TimeZone.getTimeZone(args[0]);
  TimeZone secondTime = TimeZone.getTimeZone(args[1]);
  firstFormat.setTimeZone(firstTime);
  secondFormat.setTimeZone(secondTime);
  System.out.println("-->"+args[0]+": " + firstFormat.format(date));
  System.out.println("-->"+args[1]+": " + secondFormat.format(date));
  }

donde arg[0] y arg1 son las dos zonas horarias. Referir esto ENLACE

contestado el 03 de mayo de 12 a las 16:05

El método getTime() devuelve la misma hora. no tiene relación con la zona horaria.

contestado el 03 de mayo de 12 a las 15:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.