Calculo com date e hora do BD (FECHADO)

Bom dia Pessoa,
Eu estou com uma dificuldade de realizar cálculos em informações pegas no BD postgre. No BD eu tenho dois campo, um chamado hora (que recebe por default e coloca a hora atual quando inserido um novo registro, ele é do tipo Time) e outro chamado Data (que recebe por default e coloca a data atual quando inserido um novo registro, ele é do tipo Date) eu consigo pegar estas informações e coloca em dois jTextField para mostrar pro usuário. Quando estas informações vão para o jTextField elas são convertidas para String. Ate então blz, agora eu preciso pegar estas informações que foram apresentadas e calcular. na realidade eu só preciso saber como pegar estas informações que estão em formato de hora e data e depois realizar cálculos como adição, subtração e etc.

Se você vai fazer isso no java, pode usar o joda-time, é bem tranquilo de fazer calculos.
Esse é um exemplo, e é claro existem várias sobrecargas de métodos.

DateTimeFormatter dformat = DateTimeFormat.forPattern(“HH:mm”);
DateTime dateTime = new DateTime();
System.out.println(dformat.print(dateTime));
System.out.println(dformat.print(dateTime.plusMinutes(60)));

Marcos, pra isso você usa o Calendar, ele possui funções para tudo isso que você quer, adição/subtração de datas, comparação, até pegar os nomes dos meses em qualquer idioma. Só não entendi pq dois campos um Date e outro Time. Não poderia ser só um Timestamp?

igomes, desculpa mas eu não entendi como usar isso na minha aplicação, eu tenho as informações em String, devo jogar em dataTimeFormatter para obter o formato delas? e o DateTime serve para realizar cálculos?

juliosn eu estou usando dois campos porque estas informações vão para o BD e la são campos separado. Eu estou tendo usar o Calendar, mas não estou conseguindo utilizar a subtração, eu sei que add faz com que acrescente um tempo a mais, eu vi isso com data, mas com hora ainda não sei aplicar

Calendar.add(Calendar.HOUR, 1);
Calendar.add(Calendar.MINUTE, 1);
Calendar.add(Calendar.SECOND, 1);

Eu tentei fazer isso aqui:

 Calendar ci, cf, ct;
        
        ci = Calendar.getInstance();
        cf = Calendar.getInstance();
        ct = Calendar.getInstance();
        
        
        ci.set(jtInicio.getText());

porem quando eu coloco a ultima linha ele da erro e não mostra o porque do erro. A jtInicio tem o valor da hora que vai ser subtraida com outra hora.

Joga os valores de exemplo aqui, que vc gostaria de somar/subtrair, mas já no formato que deseja.

Então, eu tenho os valores na jTextField dessa forma 10:34:25.08. Ele veio desse jeito do BD (Postgres). Utilizando esse mesmo exemplo, eu tenho um segundo tempo: 11:31:14.072. Agora eu preciso calcular a diferença entre essas duas horas.

Esse é apenas um dos casos. também tenho mais um campo com a data, que tem que ser feito o mesmo procedimento.

Veja se te atende.

String primeiraHora = “10:34:25.08”;
String segundaHora = “11:31:14.072”;
DateTimeFormatter dformat = DateTimeFormat.forPattern(“HH:mm:ss.SSS”);
DateTime primeiraHoraFormatada = DateTime.parse(primeiraHora, dformat);
DateTime segundaHoraFormatada = DateTime.parse(segundaHora, dformat);
int minutes = Minutes.minutesBetween(primeiraHoraFormatada, segundaHoraFormatada).getMinutes();

Eai vc pega pegar a diferença em dias, horas, minutos.
Nesse exemplo em minutos

É simples, faça o seguinte:

DateFormat df = DateFormat.getInstance(); 
Date hr1 = df.parse(StringData1); 
Date hr2 = df.parse(StringData2); 
long diferenca = hr1.getTime() - hr2.getTime();

Diferença em tempo:

dias = (int) (diferenca / (1000*60*60*24));  
horas = (int) ((diferenca - (1000*60*60*24*dias)) / (1000*60*60)); 
min = (int) (diferenca - (1000*60*60*24*dias) - (1000*60*60*horas)) / (1000*60);

Diferença em horas:

String diferencaHoras = df.format(horas);

1 curtida

Igones e Junior, valew mesmo… Eu juntei os dois exemplos (e mais um de pesquisa) e deu muito certo, fico ate melhor do que eu tinha pensado kkkkkk Valew mesmo viu