Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Gestione Date in Java

  1. #1

    Gestione Date in Java

    Salve a tutti, dopo aver studiato vari linguaggi orientati al web, ho deciso di iniziare a studiare Java anche per poter poi passare alla programmazione di app per Android OS.
    Mi è stato regalato il libro, non amo studiare su materiale non cartaceo, "Concetti di Informatica e fondamenti di Java, apogeo, per versioni 5,6 e 7. Il manuele è un pò "datato", per cui alcune classi sono ormai deprecate.
    Ecco che appunto mi imbatto in una di queste; in un esercizio dove si devono calcolare i giorni totali dalla propria nascita, il libro consiglia di utilizzare la classe Date, che però già mi accorgo non esserci più in nella documentazione delle API.
    Ho cercato molto in rete, ma non riesco ad ottenere il medesimo risultato, che poi trovo nelle soluzioni del libro. Il codice sorgente, fosse ancora non deprecata la classe Date sarebbe:

    codice:
    //Programma che calcola il numero di giorni trascorsi dalla nascita ( data in input )
    
    
    public class GiorniDallaNascita {
    
    
        public static void main( String[] args ) {
    
    
            Date giornoCompleanno = new Date ( 1986, 03, 19 );
            Date oggi = new Date ();
    
    
            System.out.println( "Oggi è il: " + oggi.toString() );
    
    
            int giorniDiVita = oggi.daysFrom( giornoCompleanno );
    
    
            System.out.println( "Sono trascorsi: " + giorniDiVita );
    
    
        }
    }
    Qualcuno saprebbe aiutarmi a rendere il programma funzionale anche con l'attuali API ? Grazie

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Alfiosantoro Visualizza il messaggio
    il libro consiglia di utilizzare la classe Date, che però già mi accorgo non esserci più in nella documentazione delle API.
    La classe java.util.Date è ancora viva e vegeta.

    http://docs.oracle.com/javase/8/docs...util/Date.html

    Da molto tempo svariati suoi costruttori e metodi sono "deprecati", non andrebbero più usati. Non è la classe Date in sé ad essere deprecata!

    Date non va più usato per trattare direttamente i campi separati giorno, mese, ecc.... Va usato solo come "contenitore" del long dei millisecondi dalla "epoch" (1 Gennaio 1970). Al giorno d'oggi, Date viene tipicamente usato o come "ponte" tra i Calendar e i DateFormat o per avere l'istante corrente da passare ad altre API o per ottenere il long dei millisecondi o altre cose del genere.
    Non va usato per fare calcoli sui singoli campi di una data. Per questo esistono i Calendar.

    Quote Originariamente inviata da Alfiosantoro Visualizza il messaggio
    Ho cercato molto in rete, ma non riesco ad ottenere il medesimo risultato, che poi trovo nelle soluzioni del libro.
    E quale è la soluzione del libro? Quella che hai postato?

    Quote Originariamente inviata da Alfiosantoro Visualizza il messaggio
    codice:
            Date oggi = new Date ();
    
            int giorniDiVita = oggi.daysFrom( giornoCompleanno );
    Quest'ultima riga comunque non ha molto senso .... visto che Date non ha un metodo daysFrom.


    EDIT: mi verrebbe quasi da pensare che il libro possa aver indicato o sottinteso in qualche modo che per risolvere quell'esercizio sia necessario scrivere una apposita classe Date con quel daysFrom ....
    Ultima modifica di andbin; 11-06-2014 a 09:17
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Grazie per la precisazione, evidentemente leggendo dalla documentazione sulle api avevo frainteso sulla classe Date.
    Il testo propone, appunto, questa soluzione, che però non riesco a compilare, e l errore è "Cannot find symbol Date" ...

    Il testo propone questa soluzione:

    codice:
    public class DaysAlivePrinter {
    
    
        public static void main(String[] args) {
    
    
            Day birthday = new Date( 1955, 5, 19 );
            Day today = new Day();
            System.out.print("today: ");
            System.out.println(today.toString());
            int daysAlive = today.daysFrom( birthday );
            System.out.print("days alive: ");
            System.out.println( daysAlive );
        }
    }

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Alfiosantoro Visualizza il messaggio
    Il testo propone, appunto, questa soluzione, che però non riesco a compilare, e l errore è "Cannot find symbol Date" ...

    codice:
    public class DaysAlivePrinter {
        public static void main(String[] args) {
            Day birthday = new Date( 1955, 5, 19 );
            Day today = new Day();
            System.out.print("today: ");
            System.out.println(today.toString());
            int daysAlive = today.daysFrom( birthday );
            System.out.print("days alive: ");
            System.out.println( daysAlive );
        }
    }
    Day? Sicuro che sia così il codice? Un Date assegnato oltretutto ad un Day ... che come tipo non esiste nel framework standard.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Non è che da qualche parte nel tuo testo viene fornito il sorgente (magari come esercizio precedente) della classe Day? In questo caso, non è che la riga corretta è:


    codice:
    Dat birthday = new Day(1955, 5, 19);

    Verifica e facci sapere.


    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

  6. #6
    Scusa avevo scritto male io. Comunque confermo, la soluzione del libro utilizza la classe Day che si trova ( da come scritto nel libro ) in java.lang.Object ...

    Il codice corretto, che offre il libro, che però non riesco a compilare è quindi:

    codice:
    public class DaysAlivePrinter {
    
    
    	public static void main(String[] args) {
    
    
    		Day birthday = new Day( 1955, 5, 19 );
    		Day today = new Day();
    		System.out.print("today: ");
    		System.out.println(today.toString());
    		int daysAlive = today.daysFrom( birthday );
    		System.out.print("days alive: ");
    		System.out.println( daysAlive );
    	}
    }

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Alfiosantoro Visualizza il messaggio
    utilizza la classe Day che si trova ( da come scritto nel libro ) in java.lang.Object ...
    Ma che vuol dire ?! Non ha senso ....
    All'interno del framework standard di Java SE non esiste una classe Day. Pertanto è sicuramente da creare espressamente.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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 © 2025 vBulletin Solutions, Inc. All rights reserved.