Joda-time

7 respostas
B

Estou tentando utilizar o joda-time fazendo uma diferença simples de hora
porém não estou conseguindo.:
INICIANDO AS HORAS.:

public geral() {
        initComponents();
    
        
        // INICIANDO HORA DE DIFERENÇA
       DateTimeFormatter DATE_FORMAT = DateTimeFormat.forPattern("H:mm");   
       PeriodFormatter PERIOD_FORMAT = new PeriodFormatterBuilder()   
                .printZeroAlways().minimumPrintedDigits(2)   
                .appendHours().appendLiteral(":").appendMinutes()   
                .toFormatter();

FAZENDO O CALCULO.:

private void tf_horasaidaFocusLost(java.awt.event.FocusEvent evt) {                                       
    while (true) {
        String hora2 =  in.nextLine();
        try {
            DateTime dt = DATE_FORMAT.parseDateTime(hora2); 
            return dt;
        }
        catch (Exception e)
        {
            JOptionPane.showMessageDialog("Hora inválida");
        }
    }
    
    DateTime entrada = leHora(tf_horaentrada2.getText());   
    DateTime saida = leHora(tf_horasaida.getText());   
    PERIOD period = new PERIOD(entrada, saida);   
    tf_horatotal.setText(PERIOD_FORMAT.print(period));   
    valortotal();

    }

7 Respostas

brlima

Olha, não é muita coisa, mas…

DateTime d1 = new DateTime().plusDays(1).plusHours(5).plusMinutes(50);
        DateTime d2 = new DateTime();
        
        long milisecs = (d1.toDate().getTime() - d2.toDate().getTime());
        long segundos = milisecs /1000;
        long minutos = segundos / 60;
        long horas = minutos / 60;
        long dias = horas / 24;
        
        System.out.println( "segundos: " +  segundos );
        System.out.println( "minutos: " +  minutos );
        System.out.println( "horas: " +  horas );
        System.out.println( "dias: " +  dias );
ViniGodoy

Não entendi... que cálculo vc quer fazer?

Quer saber quantas horas, minutos e segundos passaram entre os dois tempos?

Algo assim?

LocalTime start = new LocalTime("10:00:00");
LocalTime end   = new LocalTime("11:30:00");
Period period   = new Period(start, end);

System.out.println("Entre as duas datas há: " + period.getDays() + " dias,  " 
    + period.getHours() + " horas "
    + period.getMinutes() + " minutos.");

Usar getTime() e fazer conta no braço é coisa do Calendar. Esqueça isso.

B

É a diferença entre dois campos um com o horário inicial e outro com o final.
no formato HH:mm

ViniGodoy

Não serve isso?

LocalTime start = new LocalTime("10:00:00");  
LocalTime end   = new LocalTime("11:30:00");  
Period period   = new Period(start, end);  

System.out.printf("Diferença: %02d:%02d", period.getHours(), period.getMinutes());
System.out.println();
B

só que eu gostaria de utilizar com o usuário escrevendo a data
e ele aparecendo em um campo de texto
mal ai mais eh que eu tow começando em java :oops:

brlima

Legal :lol:
Hehehehe...

ViniGodoy:
Não serve isso?
LocalTime start = new LocalTime("10:00:00");  
LocalTime end   = new LocalTime("11:30:00");  
Period period   = new Period(start, end);  

System.out.printf("Diferença: %02d:%02d", period.getHours(), period.getMinutes());
System.out.println();
ricardo13

Gostei do exemplo, de certa forma me ajudou mas, eu tenho um problema.

Imagine a seguinte situação.

Eu quero saber a diferença entre 10:33:44 até 11:56:21

Daí dessa forma não irá me mostrar ~ 1hora e 22 minutos e (não sei quantos) segundos.

Como eu resolveria isso ?

Criado 7 de agosto de 2008
Ultima resposta 18 de jun. de 2010
Respostas 7
Participantes 4