PDA

Visualizza la versione completa : [JAVA] Data/ora e confronti


naide
22-11-2005, 12:31
ho visto in questo forum che è possibile convertire una stringa in una data tramite "SimpleDateFormat" ma è anche possibile se ho una stringa "HH:MM:SEC" poterla convertire in qualche oggetto, ad esempio, di tipo ora?

e avendo 2 variabili di tipo Date per confrontarle e prendere la data più recente posso farlo con gli operatori < o > ?

floyd
22-11-2005, 13:34
un oggetto che comprende solo l'orario è java.sql.Time
per confrontare due date usa after(Date) e before(Date)

naide
22-11-2005, 18:20
ottimo suggerimento per i metodi after e before.... :)

per quanto riguarda l'ora se importo anche la classe java.sql mi da un errore in compilazione nella dichiarazione della variabile Date:
"reference to Date is ambiguous, both class java.sql.Date in java.sql and class java.util.Date in java.util match"

sto cercando un altro modo utilizzando magari stesso SimpleDateFormat... :master:

murder eyes
25-11-2005, 01:35
Puoi fare anche un confronto tra due oggetti d1,d2 di tipo Date usando il metodo
getTime() che torna un long che indica quanti millisecondi sono passati da una certa data


if(d1.getTime()<d2.getTime())
{
max=d2;
min=d1;
}
else
{
max=d1;
min=d2;
}


Oppure siccome la classe Date implementa Comparable puoi anche fare un
compareTo() tra Date:



if(d1.compareTo(d2)<0)
{
min=d1;
max=d2;
}
else
{
min=d2;
max=d1;
}



Ricorda che, siccome si parla di oggetti non puoi usare operatori per dati primitivi come il < o il >. Dovrai usare dei metodi opportuni.

naide
25-11-2005, 09:56
per il confronto di Time ok...mi sembra chiaro il tuo codice, ma si può trasformare una stringa "ora/min/sec" in un oggetto Time?
come ho fatto con "SimpleDateFormat" per la data...
questa mi imposta la data con la stringa che ho passato e l'ora me la imposta a "00:00:00" e non riesco ad impostarla all'ora che voglio io...

io per il momento ho risolto con "GregorianCalendar" ma era interessante se si poteva fare anche con "SimpleDateFormat" visto che mi crea proprio due oggetti "Date"

LeleFT
25-11-2005, 14:02
Per trasformare una stringa in un oggetto Date potresti utilizzare il metodo parse() del SimpleDateFormat... io personalmente non l'ho mai usato: preferisco estrarmi i campi, convertirli in interi e crearmi un GregorianCalendar.

Per il problema di ambiguità tra java.sql.Date e java.util.Date, si risolve semplicemente esplicitando tutto il package nel momento della dichiarazione e creazione degli oggetti:


java.sql.Date miaData = new java.sql.Date();

Ciao. :ciauz:

naide
25-11-2005, 15:25
grazie! :ciauz:

Loading