Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Differenza fra due date in Java

    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

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,307
    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

  3. #3
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    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.
    ma se non voglio pasarle, per d1 & d2 faccio in questo modo poi in esempio :

    Date d1 = new Date(2000,08,01);
    Data d2 = new Date(2015,01,26);

    per trovarmi le date settate da me !

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,307
    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

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.