Dúvida, como intervalo de horas e minutos com JodaTime. [Resolvido]
2 respostas
raptor.x
Boa tarde a todos.
Pessoal preciso criar um metodo que me retorne a qtde de horas em um intervalo de tempo em horas e minutos.
Seguindo as dicas do seguinte tópico: http://www.guj.com.br/java/99361-joda-time tenho o seguinte:
SimpleDateFormatdf=newSimpleDateFormat("dd/mm/yyyy hh:mm");Dateentrada=df.parse("04/11/2011 08:35");Datesaida=df.parse("08/11/2011 15:00");Hourstempo=Hours.hoursBetween(newDateTime(entrada),newDateTime(saida));//Retorna um int contendo as horas da dif entre entrada e saida System.out.println(tempo.getHours());
O meu problema é que o metodo getHours() retorna um inteiro e eu precisava de um float. Por exemplo: 102.35horas (Equivalente a 102horas e 21minutos), para com este resultado multiplicar o valor da hora.
Por ex: 1,5h * 10,00 a hora = 15,00.
Tive dando uma olhada nas classe joda e encontrei esta:
LocalDateTime start = new LocalDateTime("2011/05/05 08:35");
LocalDateTime enD = new LocalDateTime("2011/06/05 15:00");
Period period = new Period(start, enD);
Sem sucesso!
Alguém pode me ajudar?
Pessoal preciso criar um metodo que me retorne a qtde de horas em um intervalo de tempo em horas e minutos.
Seguindo as dicas do seguinte tópico: http://www.guj.com.br/java/99361-joda-time tenho o seguinte:
SimpleDateFormatdf=newSimpleDateFormat("dd/mm/yyyy hh:mm");Dateentrada=df.parse("04/11/2011 08:35");Datesaida=df.parse("08/11/2011 15:00");Hourstempo=Hours.hoursBetween(newDateTime(entrada),newDateTime(saida));//Retorna um int contendo as horas da dif entre entrada e saida System.out.println(tempo.getHours());
O meu problema é que o metodo getHours() retorna um inteiro e eu precisava de um float. Por exemplo: 102.35horas (Equivalente a 102horas e 21minutos), para com este resultado multiplicar o valor da hora.
Por ex: 1,5h * 10,00 a hora = 15,00.
Tive dando uma olhada nas classe joda e encontrei esta:
LocalDateTime start = new LocalDateTime("2011/05/05 08:35");
LocalDateTime enD = new LocalDateTime("2011/06/05 15:00");
Period period = new Period(start, enD);
Sem sucesso!
Alguém pode me ajudar?
VOcê ja tentou criar uma classe que estenda Hours, sobrescrever o método getHours?
raptor.x
Bom dia a todos,
Pessoal, consegui encontrar uma solução relativamente simples.
O Joda-Time possui um metodo que retorna a qtde total de minutos: getMinutes()
Com isso ficou fácil resolver. Segue o algoritmo exemplo.
importjava.sql.Timestamp;importjava.text.ParseException;importjava.text.SimpleDateFormat;importjava.util.Date;importjava.util.logging.Level;importjava.util.logging.Logger;importorg.joda.time.DateTime;importorg.joda.time.Minutes;/** * Contexto do Algoritimo: Estadia de veiculo num estacionamento * Função: Converter dois intervalos de tempo em minutos e calcular o valor da estadia * @param n/a * @Return n/a * @author raptor */publicclassCalculaTempo{publicCalculaTempo(){try{converter();}catch(ParseExceptionex){Logger.getLogger(CalculaTempo.class.getName()).log(Level.SEVERE,null,ex);}}publicvoidconverter()throwsParseException{//Mascara dataHoraSimpleDateFormatdf=newSimpleDateFormat("dd/mm/yyyy hh:mm");//Criando entrada e saída em formato DateDateentrada=df.parse("07/11/2011 8:23");Datesaida=df.parse("07/11/2011 11:07");//Criando entrada e saída em formato TimestampTimestampa=newTimestamp(entrada.getTime());Timestampb=newTimestamp(saida.getTime());//recebendo dados a partir de um TimestampMinutesmin1=Minutes.minutesBetween(newDateTime(a),newDateTime(b));//recebendo dados a partir de um DateMinutesmin2=Minutes.minutesBetween(newDateTime(entrada),newDateTime(saida));//Retorna um int contendo o intervalo em minutosSystem.out.println("Timestamp convertido: "+min1.getMinutes());//Consegue trabalhar com TimestampSystem.out.println("Date convertido: "+min2.getMinutes());//Ou Date//Convertendo os minutos totais em um float que represente a qtde de horasfloattotalHoras=(float)min2.getMinutes()/60;System.out.println(totalHoras);//Definindo o valor da horafloatvalorHora=(float)1.65;//Calculando o valor sobre a qtde de tempofloatvalorTotal=totalHoras*valorHora;//Mostrando na telaSystem.out.printf("Total: = R$%.2f",valorTotal);}publicstaticvoidmain(Stringargs[]){newCalculaTempo();}}