Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    173

    [JAVA] Inserimento data da tastiera

    Ciao ragazzi,
    sto facendo un programma che prende in input da tastiera una data formato gg--mm--aaaa

    Non ho capito se esiste una funziona già pronta e come la devo trattare all'interno della classe.
    Cioè se nella mia classe devo settare:
    codice:
    private int giorno;
    private int data;
    private int anno;
    Grazie mille a tutti

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JAVA] Inserimento data da tastiera

    Originariamente inviato da mcfede88
    sto facendo un programma che prende in input da tastiera una data formato gg--mm--aaaa

    Non ho capito se esiste una funziona già pronta e come la devo trattare all'interno della classe.
    Cioè se nella mia classe devo settare:
    codice:
    private int giorno;
    private int data;
    private int anno;
    Funzione unica già "pronta", no, mi spiace. Se l'utente deve poter scrivere la data completa come singola stringa nel formato indicato e tu hai bisogno dei 3 campi separati come int, allora puoi fare:

    a) Usare SimpleDateFormat per "parsare" la stringa, ottenere un Date, il cui long dei millisecondi lo setti in un GregorianCalendar e a quel punto dal calendar puoi ottenere i 3 campi (vedi il get(int field) di Calendar). Il parsing con SimpleDateFormat, se lo fai settando anche setLenient(false) ha il vantaggio che valida la data in modo "stretto", verificando pure date che sarebbero sintatticamente corrette ma "inesistenti".

    oppure

    b) Data la singola stringa, usi i metodi di String (indexOf, substring, ecc...) oppure una espressione regolare (vedi Pattern e Matcher in java.util.regex) per estrarre le singole sottostringhe dei valori, che poi converti in int usando Integer.parseInt(). Qualunque controllo sulla validità (sia come sintassi, che ti segnala parseInt con una eccezione) sia a livello di date non esistenti, è tutto a tuo carico.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    173

    Re: Re: [JAVA] Inserimento data da tastiera

    Ti sarei molto grato se riusciresti a postarmi un piccolo esempio per studiarlo visto che in rete non trovo niente.

    Grazie mille e scusami, non chiedo mai del codice ma quì nn so da dove iniziare.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Esempio completo per parsare la data come stringa e ottenerne i 3 campi separati come int:

    codice:
    import java.text.*;
    import java.util.*;
    
    public class ProvaData {
        public static void main(String[] args) {
            String str = "31-12-2009";
    
            SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
            sdf.setLenient(false);    // strict parsing
    
            try {
                Date d = sdf.parse(str);    // Può lanciare ParseException 
    
                GregorianCalendar cal = new GregorianCalendar();
                cal.setTime(d);
    
                int giorno = cal.get(Calendar.DAY_OF_MONTH);
                int mese = cal.get(Calendar.MONTH) + 1;       // MONTH è zero-based, quindi +1
                int anno = cal.get(Calendar.YEAR);
    
                System.out.println("Giorno = " + giorno);
                System.out.println("Mese = " + mese);
                System.out.println("Anno = " + anno);
            } catch (ParseException e) {
                System.out.println("Data malformata o inesistente");
            }
        }
    }
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    173
    Ti ringrazio molto per l'aiuto.

    Ora mi sorge un altro problema dovrei fare la differenza tra due date.
    La data di inizio la prendo dal database con un getDate();
    e mi viene restituita nel formato yyyy-mm-gg

    La seconda data viene immessa da tastiera.
    Sapresti indicarmi un metodo senza usare GregorianCalendar, che non posso usare in quanto faccio
    codice:
    Date prima_data = rs.getDate(3);
    Grazie mille

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da mcfede88
    Ora mi sorge un altro problema dovrei fare la differenza tra due date.
    Se hai 2 java.util.Date, ne prendi i long con i millisecondi ( getTime() ) e ne fai la differenza. Con i millisecondi di differenza ti calcoli quello che vuoi, secondi, minuti, ore, giorni (di più no perché avrebbe poco senso...).

    Se invece ti interessa altro ... precisa.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    173
    Praticamente,
    io una data1 la prendo da tastiera ed è già in formato gg-mm-aaaa
    ed un'altra data2 la prendo da db e la converto in gg-mm-aaaa
    codice:
    			String old_date = preLibro.next(); //è in formato Stringa
    
    	
    			 
    			String qry = "SELECT * FROM  utenti INNER JOIN prestito_libri USING (ute_id)";
    			 ResultSet res = cmd.executeQuery(qry);
    			 
    			 String old_datePar = res.getString(5);
    			 
    			 DateFormat formatter_new = new SimpleDateFormat("dd-MM-yyyy");
    
    			 DateFormat formatter_old = new SimpleDateFormat("yyyyMMdd");
    			 Date date2 = (Date) formatter_old.parse(old_datePar);
    
    				String new_datePar = formatter_new.format(date2);
    Devo convertirle in formato data, altrimenti il getTimeInMillis() non va..

    Grazie

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da mcfede88
    io una data1 la prendo da tastiera ed è già in formato gg-mm-aaaa
    ed un'altra data2 la prendo da db e la converto in gg-mm-aaaa
    No ... allora: se hai una data inserita dall'utente come stringa, fai il parsing e ottieni un java.util.Date (ed è già stato mostrato prima). Se hai una data proveniente da una tabella di un DB, allora la prendi con getDate() del ResultSet che fornisce un java.sql.Date. java.sql.Date è-un java.util.Date. Quindi hai 2 oggetti Date (anche se diversi come tipo) che hanno entrambi il getTime() per avere i millisecondi di cui fai la differenza (ed è già stato mostrato prima).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    173
    Scusami, se ti do fastidio ma è la prima volta che ho a che fare con date.

    In questo modo ho trasformato la stringa in una data?
    codice:
    ResultSet res = cmd.executeQuery(qry);
    			 
    			 String old_datePar = res.getString(5);
    			 
    			 Date date2 = (Date) formatter_old.parse(old_datePar);
    
    			 String new_datePar = formatter_new.format(date2);
    Come faccio ad usare il getTime();?


    Grazie mille

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da mcfede88
    Come faccio ad usare il getTime();?
    Ma non vedo perché devi fare un parse e poi di quel Date ottenuto fai un format .... hai il Date, no? Usalo e invoca getTime().
    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.