Somando periodos de horas com JODA-TIME - otimização

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!

rapaz… se tem eu não sei… mas esse que você postou ja me quebrou um galhão!! rs
vlw!
não consegui achar um tutorial decente sobre o joda-time.

o que não consegui fazer é subtrair periodos.

tenho que fazer um controle de horas.
no final tenho que subtrair das horas extras a horas negativas.
as vezes pode acontecer de ficar negativas as horas.

ex:

horas extras: 130:00
horas negativas: 150:00

Total hroas - 20:00

alguem pode me ajudar a fazer isso com o joda-time?