E ai Pessoal, sou novato em java e me deparei com o seguinte problema:
Tenho:
hora1 = 20:00:00
hora2 = 15:00:00
Então preciso que hora1 + hora2 = 35:00:00, só que retorna 11:00:00.
Converti para String ai consegui fazer, só que estou exportando para excel e uso a API jxl então ele grava na célula como texto ai o usuário não consegue fazer cálculos.
Então se uso sheet.addCell(new Label(5, i, rgtCmc.getPermanencia())); no excel fica como texto
Se uso sheet.addCell(new DateTime(6, i, rgtCmc.getPermanencia(), horaFormat, true )); o valor fica 11:00:00
Vc tem que converter tudo em segundos, para poder realizar o cálculo.
depois junta tudo e calcula a quantidade de horas, minutos e segundos…
E
entanglement
O formato do Excel que permite visualizar “35 horas” em vez de “11 horas” tem um “[h]”. Mostramos um exemplo no attachment abaixo.
Atenção, não sei se isso funciona com o JXL
PedroMorragudo
Valeu pessoal!
gasabi
Vou arruma um código aqui para vc prontinho… Guenta só 1 kado!
gasabi
Conseguiu resolver ?
A
AndersonQuinteiro
O pessoal muito obrigado pelas dicas.
Então, ainda não, to quebrando a cabeça aqui, tentando fazer o que o pessoal esta falando, mas ainda não consegui.
Será que tem outra API melhor que a jxl para manipular excel?
Porque até consegui colocar o valor de 35:00:00 na célula mas o formato fica como texto.
PedroMorragudo
Peguei um exemplo em um site que soma a hora atual em 30 minutos automaticamente. To mexendo neste código para o usuário entrar com a hora para ser somada. Mais toda ajuda é bem vinda.
Stringhora1=("20:00:00");// Trabalhando hora 1 Stringhh1=hora1.charAt(0)+""+hora1.charAt(1);Stringmm1=hora1.charAt(3)+""+hora1.charAt(4);Stringss1=hora1.charAt(6)+""+hora1.charAt(7);Longtotalseg1=Long.parseLong(hh1)*360+Long.parseLong(mm1)*60+Long.parseLong(ss1);// Trabalhando hora 2Stringhora2=("15:00:00");Stringhh2=hora2.charAt(0)+""+hora2.charAt(1);Stringmm2=hora2.charAt(3)+""+hora2.charAt(4);Stringss2=hora2.charAt(6)+""+hora2.charAt(7);Longtotalseg2=Long.parseLong(hh2)*360+Long.parseLong(mm2)*60+Long.parseLong(ss2);System.out.println(totalseg2);// Calculando a soma das horas 1 e 2Longtotalfinalseg=(long)0;totalfinalseg=totalseg1+totalseg2;System.out.println(totalfinalseg);
PedroMorragudo
Entendo depois só converter de segundos para horas
diogocarvalho
Amigo tem uma API, que no meu ponto de vista é a melhor para trabalhar com Datas/Horas, que se chama JollyDay. Depois que descobrimos ela, melhorou e muito nosso desenvolvimento. Dê uma olhada
To usando a ideia de orientação a objeto, reutilização de código lol. Estou mexendo no que postou para nós, falta tratar os erros e deixar ele mais legível
packagemain;importjava.util.Scanner;publicclassMain2{/** * @param args */publicstaticvoidmain(String[]args){Scannerdados=newScanner(System.in);System.out.println("Digite o valor da hora 1");Stringa=dados.nextLine();Stringhora1=(a);// Trabalhando hora 1 Stringhh1=hora1.charAt(0)+""+hora1.charAt(1);Stringmm1=hora1.charAt(3)+""+hora1.charAt(4);Stringss1=hora1.charAt(6)+""+hora1.charAt(7);Longtotalseg1=Long.parseLong(hh1)*360+Long.parseLong(mm1)*60+Long.parseLong(ss1);// Trabalhando hora 2 System.out.println("Digite hora 2");Stringb=dados.nextLine();Stringhora2=(b);//String hora2 = ("10:00:00");Stringhh2=hora2.charAt(0)+""+hora2.charAt(1);Stringmm2=hora2.charAt(3)+""+hora2.charAt(4);Stringss2=hora2.charAt(6)+""+hora2.charAt(7);Longtotalseg2=Long.parseLong(hh2)*360+Long.parseLong(mm2)*60+Long.parseLong(ss2);System.out.println(totalseg2);// Calculando a soma das horas 1 e 2 Longtotalfinalseg=(long)0;totalfinalseg=totalseg1+totalseg2;System.out.println(totalfinalseg);}}
PedroMorragudo
Com tratamento de erros. Ainda falta colocar em pacotes diferentes senão fica procedural.
packagemain;importjava.util.Scanner;publicclassMain2{/** * @param args */publicstaticvoidmain(String[]args){Scannerdados=newScanner(System.in);try{System.out.println("Digite o valor da hora 1 HH:mm:ss \n");Stringhora1=dados.nextLine();// Trabalhando hora 1 Stringhh1=hora1.charAt(0)+""+hora1.charAt(1);Stringmm1=hora1.charAt(3)+""+hora1.charAt(4);Stringss1=hora1.charAt(6)+""+hora1.charAt(7);Longtotalseg1=Long.parseLong(hh1)*360+Long.parseLong(mm1)*60+Long.parseLong(ss1);// Trabalhando hora 2 System.out.println("Digite hora 2 HH:mm:ss \n");Stringhora2=(dados.nextLine());//String hora2 = ("10:00:00");Stringhh2=hora2.charAt(0)+""+hora2.charAt(1);Stringmm2=hora2.charAt(3)+""+hora2.charAt(4);Stringss2=hora2.charAt(6)+""+hora2.charAt(7);Longtotalseg2=Long.parseLong(hh2)*360+Long.parseLong(mm2)*60+Long.parseLong(ss2);System.out.println(totalseg2);// Calculando a soma das horas 1 e 2 Longtotalfinalseg=(long)0;totalfinalseg=totalseg1+totalseg2;System.out.println(totalfinalseg);}catch(Exceptionerro){System.out.println("Erro! Dados inseridos não podem ser diferentes de HH:mm:ss \n"+erro.getMessage());}}}
PedroMorragudo
Valeu diogocarvalho. Tô dando uma olhada sim e já importei para meu projeto. Tem como mostrar um exemplo de código usando este jar?
diogocarvalho
Tem sim amigo, aguarde só alguns minutos, vou procurar um projeto aqui no repositorio.
A
AndersonQuinteiro
Pessoal, muito obrigado a todos pela ajuda… valew mesmo.
diogocarvalho, também gostaria de um exemplo com o jar, estou no aguardo obrigado.