Comparação de Datas

Bom Dia !

tenho que comparar dois horarios, trago eles de tabelas diferentes do banco…
e o horario_hr é do tipo String e o horario_unico é do tipo timestamp .

logo na hora de comparar pra exibir só os valores que são diferentes…
acaba exibindo todos os horarios…
por ser diferentes a formatação . .acredito que seja esse o motivo. .

tem como eu modificar a formatação do timestamp por exemplo ?

Obrigado .

você pode trazer esse timestamp e formatar com SimpleDateFormat

SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss"); String dataFormatada = formato.parse(date);

ou você pode escolher usar o JodaTime que permite a manipulação de datas e horas de forma bem simples.

dá uma olhada no Joda: http://www.aeciocosta.com.br/?p=107

[quote=aeciovc]você pode trazer esse timestamp e formatar com SimpleDateFormat

SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss"); String dataFormatada = formato.parse(date);

ou você pode escolher usar o JodaTime que permite a manipulação de datas e horas de forma bem simples.

dá uma olhada no Joda: http://www.aeciocosta.com.br/?p=107[/quote]

Então,

o timestamp ja formatei pra Date…

e ai fiz o seguinte

if(!ts.getHorario_hr.equals(bt.getHorario_ts())) {
           comp.setEntradaTS(ts.getHora());
           comp.setEntradaBio(bt.getMenor_horario());
}[/code]

porem mesmo passando ele pra String na hora de comparar ele retorna resultados sempre diferentes.. 
justamente porque o String vem como "HH:mm" e o Timestamp/Data como "dd/MM/yyyy HH:mm".

entao criei metodos pra isso.. 

ficando assim .. 

[code]public static String formataHora(String data) {

        SimpleDateFormat formatoData = new SimpleDateFormat("HH:mm");

        return formatoData.format(data);
    }

    public static String formataHora(Date data) {

        SimpleDateFormat formatoData = new SimpleDateFormat("HH:mm");

        return formatoData.format(data);
    }

if(!(formataHora(ts.getHorario_hr)).equals(formataHora(bt.getHorario_ts()))) {
         comp.setEntradaTS(ts.getHora());
         comp.setEntradaBio(bt.getMenor_horario());
}


só que ai gera o seguinte erro:

Hibernate: /* dynamic native SQL query */ SELECT tb.sigla, tb.dia, min(horario) as menor_horario, max(horario) as maior_horario FROM tb_biometrico tb WHERE tb.dia between ? AND ? GROUP BY tb.sigla, tb.dia ORDER BY tb.sigla, tb.dia 
Erro ao gerar o relatorio. java.lang.IllegalArgumentException: Cannot format given Object as a Date
java.lang.IllegalArgumentException: Cannot format given Object as a Date
        at java.text.DateFormat.format(DateFormat.java:281)
        at java.text.Format.format(Format.java:140)
        at br.com.projectus.acompanhamento.persistencia.RelCompTimeSheetBiometrico.formataHora(RelCompTimeSheetBiometrico.java:124)
        at br.com.projectus.acompanhamento.persistencia.RelCompTimeSheetBiometrico.comparaTimeSheetBiometrico(RelCompTimeSheetBiometrico.java:148)
        at br.com.projectus.acompanhamento.relatorios.RelatorioCompTimeSheetBiometrico.gerarRelatorio(RelatorioCompTimeSheetBiometrico.java:61)
        at acompanhamento.CompTimeSheetBiometrico.btnGerarRelatorio_action(CompTimeSheetBiometrico.java:195)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.el.parser.AstValue.invoke(AstValue.java:191)