Como escolher o fuso horário do formato ISO 8601 String em uma instância do calendário

Como entrada, tenho uma string que é uma String na ISO 8601 para representar a data. Por exemplo:

"2017-04-04T09: 00: 00-08: 00"

A última parte deString, qual é"-08: 00" indica deslocamento de fuso horário. Eu converto essa string em umCalendar instância, como mostrado abaixo:

Calendar calendar = GregorianCalendar.getInstance();
Date date = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.US).parse(iso8601Date);
calendar.setTime(date);

iso8601Date is "2017-04-04T09: 00: 00-08: 00"

Mas isso não escolhe o fuso horário e se eu obtiver o fuso horário deCalendar instância, fornece a instância do laptop atualmente definida e não obtém o registro de data e hora da ISO 8601 String. Verifico o fuso horário através da instância do calendário como:

calendar.getTimeZone().getDisplayName()

Alguém pode mostrar como escolher o fuso horário também noCalendar instância?

questionAnswers(3)

yourAnswerToTheQuestion