Olá,
Estou desenvolvendo uma API Rest para gerenciar as hospedagens de um Hotel/Motel. Quando eu faço o checkout do hospede eu chamo um método que calcula se a estadia vai ser em diárias ou em horas. segue o método:
private BigDecimal calculaValorHospedagem() {
var duracaoEstadia = Duration.between(this.dataEntrada, this.dataSaida).toHours();
if( duracaoEstadia > 8){
var dias = Duration.between(this.dataEntrada, this.dataSaida).toDays() + 1;
var valor = this.quarto.getDiaria().multiply(BigDecimal.valueOf(dias));
return valor;
}else {
var horas = Duration.between(this.dataEntrada, this.dataSaida).toMinutes() / 60;
var valor = this.quarto.getHora().multiply(BigDecimal.valueOf(horas));
return valor;
}
}
O meu problema é quando a condição cai na parte de horas, ou seja quando a permanência é inferior a 8h. Eu queria fazer um arredondamento de 30 em 30 mim. Tipo, se a permanência do cara foi 1h e 10min fosse feito um arredondamento para 1h e 30min, ou se o cara ficou 2h e 40min fosse feito o arredondamento para 3h. Não sei se eu consegui explicar direito
Existe alguma biblioteca que faça isso, ou tenho que implementar isso na base da lógica mesmo?
Agradeço desde já.