Diferença / Intervalo em horas - JODA-TIME

3 respostas
R

pessoal tenho dois objetos que representam determinadas horas t1 e t2 que são LocalTime, quero subtrai-los de modo que eu tenha uma terceira instancia de que represente a diferença em horas, minutos e segundos entre eles.

Consegui resolver o problema da seguinte maneira:

LocalTime t1 = new LocalTime(16, 25, 00);
		LocalTime t2 = new LocalTime(16, 26, 00);
		
		t2 = t2.minusHours(t1.getHourOfDay());
		t2 = t2.minusMinutes(t1.getMinuteOfHour());
		t2 = t2.minusSeconds(t1.getSecondOfMinute());
		
		System.out.println(t2); // retorno 00:01:00.000

alguem tem sugestoes para enxugar isso ou sabe se existe um metodo que faça isso de uma maneira mais simples como:

LocalTime t3 = t2.minusLocalTime(t1);

?

abraços…

3 Respostas

T

Você não entendeu os conceitos do Joda-Time.

Se você tem 2 objetos que representam um instante no tempo (t1, t2), eles devem pertencer a uma classe que implementa o conceito Instant, por exemplo, DateTime.

Quando você subtrai um instante do outro, deve ter um valor que é uma Duration.

Veja o exemplo:

http://joda-time.sourceforge.net/key_duration.html

R

opa, valeu thingol.

realmente nao entendi bem os conceitos ainda. se puder dar mais uma força vamos do começo.

1: preciso persistir apenas horas no banco

entao estou usando na minha entity um atributo:

@Type(type="org.joda.time.contrib.hibernate.PersistentLocalTimeAsTime")
private LocalTime horaEntrada;

@Type(type="org.joda.time.contrib.hibernate.PersistentLocalTimeAsTime")
private LocalTime horaSaida;

este seria o tipo correto de persistir apenas hora ? nao usei DateTime pq ele tb grava a data.

2: preciso calcular a diferença entre essas horas

muito obrigado

L
Caros, ressucitei o tópico pq estou com um problema parecido e não achei resposta ainda. Tenho exatamente essa situação:
@Type(type="org.joda.time.contrib.hibernate.PersistentLocalTimeAsTime")  
private LocalTime horaEntrada;  
  
@Type(type="org.joda.time.contrib.hibernate.PersistentLocalTimeAsTime")  
private LocalTime horaSaida;
e preciso fazer uma consulta filtrando pelo tempo de permanência (saida - entrada), porem só consigo fazer isso usando SQLQuery com funções do MySQL, ou seja, perdi a portabilidade de SGDB. Alguém tem alguma idéia de como se faz isso dentro do hibernate com Criteria ou HQL? Obrigado!
Criado 2 de abril de 2009
Ultima resposta 30 de jun. de 2011
Respostas 3
Participantes 3