Análisis de una fecha y hora local de la cadena ISO 8601 como si estuviera en UTC
En java necesito hacer un objeto de calendario a partir de una cadena en el formato:
yyyy-MM-dd'T'HH:mm:ss
Esta cadena siempre se establecerá como hora GMT. Así que aquí está mi código:
public static Calendar dateDecode(String dateString) throws ParseException
{
TimeZone t = TimeZone.getTimeZone("GMT");
Calendar cal = Calendar.getInstance(t);
date = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
Date d = date.parse(dateString);
cal.setTime(d);
return cal;
}
Y entonces:
Calendar cal = Calendar.getInstance();
try
{
cal = dateDecode("2002-05-30T09:30:10");
} catch (ParseException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
int month = cal.get(Calendar.MONTH)+1;
Y me sale la siguiente salida:
Timezone: GMT+00:00 date: 2002-5-30 time: 7:30:10
Que es lo que puede ver mal, ya que el tiempo proporcionado está en GMT y no en CET. Creo que lo que sucede es que el tiempo proporcionado está en CET (que es mi zona horaria actual) y, por lo tanto, convierte el tiempo de CET a GMT y, por lo tanto, deduce dos horas del resultado final.
¿Podría alguien ayudarme con esto?
Gracias
Por cierto: no deseo usar JodaTime por diferentes razones.