Estou tentando subtrair uma hora de outra, para encontrar a diferença.
Exemplo:
09:00:00-07:00:00=02:00:00
Meu código é o seguinte:
publicStringsalvar(){if(!validate()){return"atividade";}try{utx.begin();longtotalHoras=(long)(this.atividade.getSaidaPresencial().getTime()-this.getAtividade().getEntradaPresencial().getTime()/(double)(1000*60*60));Timeth=newTime(totalHoras);if(getAtividade().getId()==null){this.atividade.setTotalHoras(th);em.persist(getAtividade());}else{em.merge(this.getAtividade());}utx.commit();return"atividades";}catch(Exceptione){FacesMessagefm=newFacesMessage("Erro ao salvar");FacesContext.getCurrentInstance().addMessage("salvar",fm);System.out.println(e);return"atividade";}}
Os campos estão como TIME no banco, eu subtraio uma hora da outra e gravo em outro campo de TIME.
Olá,
este post está quase perfeito. Vc colocou seu objetivo e um código que supostamente era para funcionar, PORÉM esqueceu de mencionar qual seu problema com isto.
Mas já para tentar ajudar, o código abaixo não me parece correto: long totalHoras = (long) (this.atividade.getSaidaPresencial().getTime() - this.getAtividade().getEntradaPresencial().getTime() / (double) (1000 * 60 * 60));
Lembre-se que na matemática divisão é feita antes que a subtração e na programação não é diferente. Se vc quer antes subtrair e depois fazer a divisão, use parenteses separando a subtração da divisão.
Não entendi, por que o -1? se eu preciso subtrair uma hora da outra.
B
blayd2015
a função add do calendar tanto ele pode adicionar quanto tirar “horas, minutos, segundos, dias etc…” o “-1” é pq usando o Calendar.HOUR ele vai tirar uma hora da hora que vc setar no setTime
F
FernandoOliveira
Estou com um pouco de dificuldade de entender, vamos lá: Eu possuo horaInicio e horaFim e preciso subtrair a horaInicio da horaFim como ficaria?
L
Luis_Augusto_Santos
publicclassTeste{publicstaticvoidmain(String[]args){Calendarcal=Calendar.getInstance();DatehoraIni=cal.getTime();cal.add(Calendar.HOUR,10);DatehoraFim=cal.getTime();/* * As datas podem vir do banco de dados, do usuário, etc * */longumaHora=1000/*ms*/*60/*s*/*60/*m*/;longhoraIniMs=horaIni.getTime();longhoraFimMs=horaFim.getTime();longdiff=horaFimMs-horaIniMs;longhoras=diff/umaHora;System.out.println(horas+" horas");}}
A
AbelBueno1 like
Como o @Rodrigo_Void disse, faltou você dizer qual o problema que está vendo.
Tome cuidado que quando você subtrai uma data de outra, você nao tem um Date, você tem a duraçao entre os dois eventos, que em java pode ser calculado assim:
Para armazenar essa duraçao no banco talvez seja melhor usar a quantidade de horas ou minutos ou segundos que o evento durou. O objeto Duration que você tem acima tem métodos para você obter o valor que desejar.
Lucas_Camara1 like
Com java 8, utilizando a nova API de datas, você conseguirá assim: