Problemas com Soma de Hora!

Boa noite galera,

estou com um probleminha aqui em relação a hora…

Eu tenho na minha JSP um radio com um horário… exemplo:

<input type="radio" name="datahorario" value="${data} 09:00:00"/>

<input type="radio" name="datahorario" value="${data} 09:30:00"/>

<input type="radio" name="datahorario" value="${data} 10:00:00"/>

<input type="radio" name="datahorario" value="${data} 10:30:00"/> 

Eu tenho também um select com Duração:

Duracao: 
<select name="duracao">
   <option value="00:30:00">00:30h</option>
   <option value="01:00:00">01:00h</option>
   <option value="01:30:00">01:30h</option>
   <option value="02:00:00">02:00h</option>
</select>

Se eu selecionar a duração de 01:30h como posso fazer a divisão do horário… O agendamento é feito de 30 em 30 minutos…

Exemplo:

09:00(horário) + 01:30(duracao) = 10:30(total)

O sistema tem que gravar 3 agendamentos… o de 09:00, 09:30, 10:00

Entenderam ?

Muito obrigado,

Aguardo resposta.

Se os seus dados estiverem em String ainda, transforme-os em Calendar.

Transforme tanto o horario quanto a duração em Calendar. Vai ajudar a fazer os cálculos.

Com o Calendar você consegue acessar individualmente as partes (horas, minutos, segundos) e utilizar essas partes no cálculo.

Você pode por exemplo, pegar o tempo da duração em minutos (hora * 60 + minutos) e então somar ao horario.

Pseudo-código:

Calendar horario = toCalendar(form.horario);
Calendar duracao = toCalendar(form.duracao);

int minutos = duracao.get(HOUR) * 60 + duracao.get(MINUTE);
Calendar proximoHorario = Calendar.getInstance();
proximoHorario.setTime(horario.getTime());
proximoHorario.add(MINUTE, minutos);

Usei o request.getParameter…

normal…

Atualizei meu post com um pseudo código…
No próprio GUJ tem vários posts sobre como transformar String em Calendar…

Consegui visualizar e achei sua ideia boa… porém acredito que talvez não resolva meu problema =/

estou analisando…

muito obrigado.

Como você precisará de 3 agendamentos… faça um loop para criar vários calendar em sequencia e ir adicionando os minutos…

Exemplo:

Calendar horario = toCalendar(form.horario);  
Calendar duracao = toCalendar(form.duracao);  
  
int minutos = duracao.get(HOUR) * 60 + duracao.get(MINUTE);  
Calendar proximoHorario = copy(horario);
List<Calendar> todosHorarios = new ArrayList<Calendar>();
for(0..2){
     Calendar novoAgendamento = copy(proximoHorario);
     todosHorarios.add(novoAgendamento);
     proximoHorario.add(MINUTE, minutos);  
}