PDA

Visualizza la versione completa : [Java] Differenza tra date


Fra
17-01-2003, 00:02
Vorrei ricavare, date due date, la differenza in giorni .... come faccio ? CI sarà un metodo già disponibile in qualche classe (di Date o Calendar o altro ?) ?

pippo75
17-01-2003, 09:24
puoi provare a fare in questo modo:
ottieni i millisecondi della data1 e della data due
li sottrai
col risultato setti un nuovo oggetto calendar
dal calendar ti ottieni il numero dell'anno e il numero del giorno all'interno dell'anno, e poi te lo calcoli
è un po' contorto ma dovrebbe funzionare

Nei metodi disponibili non ho trovato niente che potesse essere utile

floyd
17-01-2003, 09:25
Date uno, due;
long diff = uno.getTime() - due.getTime();
long giorni = diff / 1000 / 60 / 60 / 24;

Fra
17-01-2003, 14:58
Ho trovato molte difficoltà nel settare una data con le classi Calendar o Date.
Mi spiego meglio : le date che ho sono due oggetti di classe "Data" (che una classe creata da me con tre attributi privati : int giorno, int mese e int anno).
Quindi mi conviene convertirle in oggetti di classe Calendar o Date (anche se ancora non ci riesco .... ottengo delle date diverse ... mah?) oppure mi faccio un calcoletto in giorni ?

floyd
17-01-2003, 15:04
visto che esistono classi che gestiscono date non c'è bisogno di crearne una, Calendar ha un metodo set che imposta i campi della data

pippo75
17-01-2003, 15:04
per ottenere una data utilizzando un oggetto calendar:


Calendar g = Calendar.getInstance();
g.set(2003,0,17); // setta la data odierna
Date d = g.getTime(); // ottiene l'oggetto Date di java


e poi puoi utilizzare il metodo suggerito da floyd :)

Fra
17-01-2003, 15:10
Faccio un passo indietro.
Ho un DB (Access :( ). Da questo devo ricavare dei dati, uno dei quali è un campo data. Ottengo la data con il metodo getString("nome campo") (della classe ResultSet).
Purtroppo la data che ricavo non è quella conenuta nel campo del db. Da cosa dipende .... voi avete mai avuto problemi di questo tipo ... sono io che non so usare le classi di java per gestire le date?

floyd
17-01-2003, 15:17
Date data = (java.util.Date)rs.getDate("campo");
devi castare dato che getDate ritorna un java.sql.Date

Fra
17-01-2003, 15:32
Ti posto il codice :

per l'acquisizione della data dal DB :
_inserzione.setData(new Data((Date)inserzioni.getDate("Data_inserimento")));

_inserzione è un'istanza di una classe create da me.
inserzioni è un'istanza di classe ResultSet
Data è la classe che uso per gestire le date

Un costruttore della classe data ha come par. d'ingresso un oggetto di classe Date :

public Data(Date _data){
giorno=_data.getDate();
mese=_data.getMonth()+1;
anno=_data.getYear()+1900;
}

Ora sembra che le cose cominciano a quadrare. E' giusta questa conversione?

Uso una classe personalizzata per le date giusto perchè l'avevo già fatta in precedenza :sbav:

floyd
17-01-2003, 15:41
sono metodi deprecati

fai un calendar
public Data(Date _data) {
Calendar c = Calendar.getInstance;
c.setTime(_data);
giorno=c.get(Calendar.DAY_OF_MONTH);
mese=c.get(Calendar.MONTH);
anno=c.get(Calendar.YEAR);
}
così sono buoni, il cast sembra ok ma provalo, è il modo + sicuro

Loading