Dunque devo confrontare una data che estraggo da un campo DATE di Oracle con la data di oggi per vedere quale viene prima (ovviamente le 2 date possono anche coincidere)
Ho pensato(più che altro è la prima cosa che ho trovato :-) ) di usare l'oggetto GregorianCalendar e il metodo compareTo dell'oggetto Date per il confronto.
Ho quindi usato il seguente codice per estrarre la data di oggi:
GregorianCalendar c=new GregorianCalendar() ;
Date data di oggi=c.getTime();
e il seguente codice per avere la data dal db:
String select="SELECT...";
Resultset rs = stmt.executeQuery(sel);
if(rs.next()) {
Date dataDb=rs.getDate("DATA");
}
GregorianCalendar c2=new GregorianCalendar() ;
c2.setTime(dataDb);
Date dataDaConfrontare=c2.getTime();
Ecco facendomi stampare le 2 date ottengo(in questo caso anche nel db c'è la data di oggi):
data di oggi: Jun 01 17:55:08 CEST 2005
data nel db: Jun 01 00:00:00 CEST 2005
il confronto col compareTo() risulta quindi impreciso in quanto da una parte ci sono minuti ecc. e dall'altra no(e in un caso come quello sopra ad esempio le 2 date non risulterebbero uguali per via dei minuti ecc.)-
ho quindi agito così:
Data di oggi:
GregorianCalendar c=new GregorianCalendar() ;
Date dataOggi=c.getTime();
Data db:
String select="SELECT...";
Resultset rs = stmt.executeQuery(sel);
if(rs.next()) {
Date dataDb=rs.getDate("DATA");
}
GregorianCalendar c2=new GregorianCalendar();
c2.setTime(dataDb);
int giorno2=c2.get(Calendar.DAY_OF_MONTH);
int anno2=c2.get(Calendar.YEAR);
int mese2=c2.get(Calendar.MONTH);
GregorianCalendar k2=new GregorianCalendar() ;
k2.set(anno2, mese2, giorno2);
Date dataDBfinale=k2.getTime();
Ok ora dataOggi e dataDBfinale sono confrontabili e tutto funziona; il codice non mi sembra però molto pulito e bello.
Che potevo fare (sempre usando GregorianCalendar)???
C'è anche qualche oggetto diverso (e migliore) rispetto a GregorianCalendar??
Intanto che qualcuno risponde cerco anchio di migliorare il codice
ciao e grazie