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

1 resposta
MrDataFlex

Pessoal, tem uma forma mais fácil de se fazer isso:

somaHora("03:30", 1.20) = "04:50"

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);
	}
somaHora(0.30, 4) = "02:00"
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);
	}

?

Obrigado!

1 Resposta

I

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?

Criado 16 de agosto de 2008
Ultima resposta 16 de mar. de 2009
Respostas 1
Participantes 2