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.

Respuestas a la pregunta(2)

Su respuesta a la pregunta