Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    26

    formattazione delle Date dal Database

    Ciao a tutti,
    ho un problema nel recuperare la data da un campo dal database.
    In pratica, il codice è più o meno questo:

    GregorianCalendar calendar = new GregorianCalendar();
    bean.setMyDate(ResultSet.getDate("myDate", calendar));

    Il problema è che non vengono recuperate esattamente le ore, i minuti e i secondi.
    Debuggando e utilizzando un convertitore mi sono accorto che il tempo in millisecondi è sempre 00.00.00 (nel db invece nn è così).

    Anche se dopo utilizzo le classi SimpleDateFormat piuttosto che DateFormat il risultato è sempre lo stesso: 00.00.00

    Il problema ce l'ho dopo il passaggio a java 1.6

    Qualcuno sa darmi una spiegazione, e un aiuto per una corretta estrazione dal db?

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    posta una data come da database.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    26
    Si, allora nel database visualizzo questa data:

    07/01/2011 14.41.31

    ma nel bean.setMyDate viene inserito questo valore: 1294354800000.

    PS: Il campo nel DB (Oracle) è di tipo DATE

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    nel database non c'è alcun riferimento ai millisecondi:

    7 gennaio 2011, ore 14 41 minuti e 31 secondi

    1294354800000 è il timestamp da epoch (circa 14980 giorni) che corrisponde al 7 gennaio 2011, 14 ore 41 minuti e 31 secondi (e 0 millisecondi, visto che non sono stati indicati nel database)

    Se vuoi anche i millisecondi, usa un timestamp o un data con millisecondi anche nel database, altrimenti questi saranno sempre considerati "0"
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    26
    scusa Andrea, ma non è vero.

    1294354800000 corrisponde al 7 gennaio 2011, ore 00, 00 minuti e 00 secondi.

    Il valore timestamp esatto corrispondente alla mia data è: 1294407691000

    converter


    Infatti, nella versione 1.5 di java questo problema non me lo dava. Il timestamp estratto era 1294407691000 e la data visualizzata alla fine in pagina era 07/01/2011 14.41.31.

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    26
    PS: ho sbagliato io a parlare di millisecondi, intendevo il timestamp visualizzato nel debugger. Pardon

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    ferma, sull'orario saltato hai ragione tu, ma mi ero fermato al calcolo a spanne che avevo fatto (14980 giorni da epoch sono il 7 gennaio 2011). A sto punto, che fa setDate? Se non considera ore minuti e secondi, di nuovo questi verranno messi a 0
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    mini-classe di test, compilata ed eseguita con jdk/jre 6
    codice:
    import java.text.*;
    import java.util.*;
    
    /**
     *
     * @author Andrea
     */
    public class Esercizio21 {
        
        public static void main (String[] args) {
            String pattern = "dd/MM/yyyy hh.mm.ss";
            String dateString = "07/01/2011 14.41.31";
            SimpleDateFormat sdf = new SimpleDateFormat(pattern);
            try {
                long timestamp = sdf.parse(dateString).getTime();
                System.out.println(timestamp);
            }
            catch (Exception e) {
                e.printStackTrace();
            }
        }
        
    }
    stampa: 1294407691000
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    26
    esatto e alla fine mi stampa in pagina 07/01/2011 00.00.00

    Purtroppo non ho deciso io di passare alla 1.6, altrim avrei lasciato tutto com'era.

    Sto provando a fare questo:

    bean.setMyDate(new java.util.Date(ResultSet.getTimestamp("myDate").ge tTime()));

    sperèm!!

    Cmq, rimane sempre il fatto del diverso comportamento fra la 1.5 e la 1.6, una estrae 1294354800000 mentre l'altra 1294407691000.

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    26
    Olè

    funziona con l'ultimo metodo usato:

    bean.setMyDate(new java.util.Date(ResultSet.getTimestamp("myDate").ge tTime()));


    Ora devo mettermi d'impegno e aggiornare il codice in tutti i punti

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.