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

    [JAVA]GregorianCalendar non aggiorna l'ora e la data di sistema

    Salve a tutti.
    Come da titolo del topic, il GregorianCalendar non mi restituisce la data e l'ora di sistema aggiornati.
    Forse capirete meglio il mio problema postandovi del codice:
    codice:
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.GregorianCalendar;
    import javax.swing.JLabel;
    import javax.swing.Timer;
    
    /**
     *
     * @author Naruto 92
     */
    public class DataOra{
    
        private JLabel d, o;
        private GregorianCalendar gc;
    
        public DataOra(JLabel data, JLabel ora){
            d=data;
            o=ora;
            gc=new GregorianCalendar();
            setDataOra();
            new Timer(1000, new ActionListener(){
                public void actionPerformed(ActionEvent evt){
                    setDataOra();
                }
            }).start();
        }
        private void setDataOra(){
            System.out.println("Ora: " + gc.get(GregorianCalendar.HOUR_OF_DAY) + ":" + gc.get(GregorianCalendar.MINUTE) + ":" + gc.get(GregorianCalendar.SECOND));
            d.setText("Data: " + gc.get(GregorianCalendar.DAY_OF_MONTH) + "/" + gc.get(GregorianCalendar.MONTH) + "/" + gc.get(GregorianCalendar.YEAR));
            o.setText("Ora: " + gc.get(GregorianCalendar.HOUR_OF_DAY) + ":" + gc.get(GregorianCalendar.MINUTE) + ":" + gc.get(GregorianCalendar.SECOND));
        }
        
    }
    il codice non è ottimale per via della duplicazione della riga
    codice:
    "Ora: " + gc.get(GregorianCalendar.HOUR_OF_DAY) + ":" + gc.get(GregorianCalendar.MINUTE) + ":" + gc.get(GregorianCalendar.SECOND)
    ,ma verrà eliminata una volta risolto il problema (la uso a scopo di debug).
    lanciando in esecuzione il programma ottengo dalla S.o.p. la seguente visualizzazione:

    Ora: 14:25:39
    Ora: 14:25:39
    Ora: 14:25:39
    Ora: 14:25:39
    Ora: 14:25:39
    Ora: 14:25:39
    Ora: 14:25:39
    .............................

    quando dovrei ottenere:

    Ora: 14:25:39
    Ora: 14:25:40
    Ora: 14:25:41
    Ora: 14:25:42
    Ora: 14:25:43
    Ora: 14:25:44
    Ora: 14:25:45
    ....................................

    oramai le ho provate tutte, ma senza risultato...
    vi ringrazio per l'aiuto che saprete darmi.

    Naruto 92
    I miei esempi in Java qui: http://cdpjavaexamples.altervista.org/index.html

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    GregorianCalendar viene settato con la data di sistema nell'istante in cui lo istanzi, per ottenere quello che vuoi dovresti settare di continuo l'ora (cosa improponibile)
    non so che altro dirti in merito

  3. #3
    capisco.

    quindi a questo punto dovrei crearmi ad ogni secondo un oggetto GregorianCalendar?
    mi sembra un pò assurda come cosa...
    I miei esempi in Java qui: http://cdpjavaexamples.altervista.org/index.html

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    al massimo setti la data ogni secondo, ma è una cosa improponibile (nel senso che è orrenda a vedersi e soprattutto crea un carico di elaborazione non indifferente)

  5. #5
    per adesso mi creo un oggetto GregorianCalendar ogni secondo e mi richiamo il GarbageCollector ogni ora, giusto per svuotare un pò la RAM da tutti i riferimenti dei precedenti GregorianCalendar.

    Una soluzione migliore è comunque accettata
    I miei esempi in Java qui: http://cdpjavaexamples.altervista.org/index.html

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    no perché fare la chiamata a
    codice:
    System.gc();
    non è detto quando e se il gc viene chiamato. Non è la soluzione ottimale, soprattutto non so a quanto serva fare questo casino solo per far visualizzare i secondi

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.