Ragazzi,
sono inesperto nel linguaggio Java, devo calcolare i giorni fra due date posso avere un esempio di codice ?
Sulla rete ne ho trovati alcuni esempi ma sembrano ostici e non mi hanno funzionato.
Grazie
Ragazzi,
sono inesperto nel linguaggio Java, devo calcolare i giorni fra due date posso avere un esempio di codice ?
Sulla rete ne ho trovati alcuni esempi ma sembrano ostici e non mi hanno funzionato.
Grazie
Java non ha nulla di pre-confezionato per effettuare questa operazione. Quindi hai due scelte:
1) Farla a mano (non è complicato)
2) Usare una libreria di terze parti (come Joda Time), che ha già incorporato tutto il necessario.
Soluzione 1:
codice:private static long differenza(Date d1, Date d2) { return (d1.getTime() - d2.getTime()) / 86400000L; }
Il metodo (statico) si aspetta come primo parametro la data più recente e come secondo parametro la data più vecchia. Se vengono passate in ordine inverso, chiaramente, il risultato sarà negativo.
A te documentarti sulla classe java.util.Date e capire cosa faccia in soldoni quell'espressione matematica.
Ciao.![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
No. La classe Date non ha un costruttore di quel tipo.
Un oggetto Date (che rappresente, quindi, un istante nel tempo) lo ricavi in diversi modi:
1) Costruendo un oggetto Calendar (GregorianCalendar) passandogli anno, mese e giorno (attenzione, che il mese è 0-based, quindi 0 = Gennaio, 1 = Febbraio, ecc)
2) Parsando una stringa mediante, ad esempio, SimpleDateFormat.
3) Da altre fonti (come un campo di un DB, il parsing mediante libreria esterna, ecc)
Esempi:
codice:// Usando GregorianCalendar: GregorianCalendar gc = new GregorianCalendar(2000, 7, 1); // 1 AGOSTO 2000 Date d = gc.getTime(); // La variabile "d" contiene la data // Usando il java.text.SimpleDateFormat SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); Date d = sdf.parse("01/08/2000"); // 1 AGOSTO 2000
Il secondo metodo pretende (ovviamente) una corretta gestione dell'eccezione ParseException.
Ciao.![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza