Trate de usar TimeZone.getDefault()
en lugar de TimeZone.getTimeZone("GMT")
De the docs:
... obtienes un TimeZone usando getDefault que crea un TimeZone basado en la zona horaria donde se está ejecutando el programa .
EDITAR: Puede analizar la fecha usando SimpleDateFormat (también está la documentación en la cadena de formato allí). En su caso, usted quiere hacer (no probado):
// note that I modified the format string slightly
SimpleDateFormat fmt = new SimpleDateFormat("yyyy/MM/dd'T'HH:mm:ss'Z'");
// set the timezone to the original date string's timezone
fmt.setTimeZone(TimeZone.getTimeZone("GMT"));
Date date = fmt.parse("1998/12/21T13:29:31Z", new ParsePosition(0));
// then reset to the target date string's (local) timezone
fmt.setTimeZone(TimeZone.getDefault());
String localTime = fmt.format(date);
otra alternativa es utilizar dos instancias independientes de SimpleDateFormat, uno para la original y una para el tiempo objetivo.
@Lei Ryan gracias por el apoyo, los pls comprueban mi pregunta actualizado –
@Paresh Mayani: ver mi respuesta actualizada –
@Lei Ryan, pero querida i sabe cómo hacer el análisis y el formato de la fecha, pero desea mostrar UTC en la zona horaria local –