Pessoal, tem uma forma mais fácil de se fazer isso:
somaHora(“03:30”, 1.20) = “04:50”
[code]
public static String somaHora(String hora, double add) {
//Periodo a ser somado
String [] arraySomado = hora.split(":");
int h = Integer.parseInt(arraySomado[0]);
int m = Integer.parseInt(arraySomado[1]);
Period somado = new Period(h, m, 0, 0);
//Periodo a somar
String [] arraySomar = String.valueOf(add).split("\\.");
int h2 = Integer.parseInt(arraySomar[0]);
int m2 = Integer.parseInt(arraySomar[1].length() == 1 ? arraySomar[1]+"0" : arraySomar[1]);
Period soma = new Period(h2, m2, 0, 0);
//Soma
somado = somado.plus(soma);
//Normaliza
somado = somado.normalizedStandard(PeriodType.time());
//Formata
PeriodFormatter pf = new PeriodFormatterBuilder()
.printZeroAlways()
.minimumPrintedDigits(2)
.appendHours()
.appendSeparator(":")
.appendMinutes()
.toFormatter();
return somado.toString(pf);
}[/code]
somaHora(0.30, 4) = “02:00”
[code] public static String somaHora(double horaPorDia, int vezes) {
Period somador = new Period();
DecimalFormat decimal = new DecimalFormat(“00.00”);
String [] arraySomar = decimal.format(horaPorDia).split(",");
int h2 = Integer.parseInt(arraySomar[0]);
int m2 = Integer.parseInt(arraySomar[1].length() == 1 ? arraySomar[1]+“0” : arraySomar[1]);
Period soma = new Period(h2, m2, 0, 0);
for (int i = 0; i < vezes; i++) {
somador = somador.plus(soma);
}
somador = somador.normalizedStandard(PeriodType.time());
//Formata
PeriodFormatter pf = new PeriodFormatterBuilder()
.printZeroAlways()
.minimumPrintedDigits(2)
.appendHours()
.appendSeparator(":")
.appendMinutes()
.toFormatter();
return somador.toString(pf);
}[/code]
?
Obrigado!