Il mi oproblema di oggi è questo: ho un campo di testo (jTextField) nel quale l'utente digita la data di nascita. Io prelevo il valore digitato con
ove dataNascitaT è il mio jTextField. Ora, non ho bisogno di fare calcoli sulla data, quindi potrei ipoteticamente anche non trasformare la stringa in data, però ho necessità di fare un controllo sul formato, se la data è stata inserita correttamente.codice:String dataString = dataNascitaT.getText();
Ho pensato a due possibilità:
1) usare il SimpleDateFormat, ma ho trovato istruzioni solo per prendere un java.util.Date (che tra l'altro è deprecato, se mai userei se possiblie un
) e ottenere una String formattata, mentre non ho trovato il modo per prendere un String e formattarlo in data, cioè il contrario (e quello che serve a me). In questo modo, se anche fosse possibile, forse non saprei però effettivamente se la data è scritta bene, perché se per esempio mi scrivono "24122003" per intendere 24 ott 2003, non è che formattando questa stringa in data nel formato aaaa/MM/gg mi viene fuori che la data è 2412 20 03? cioè, ok non esiste il ventesimo mese, ma forse c'è una combinazione che ora non mi viene in cu la cosa non funziona.... :-) penso di aver reso l'idea di quello che vorrei dire...codice:Calendar dataMia = new GregorianCalendar();
2) scrivere io un metodo che mi prende una sottostringa e me la controlla.... una cosa tipo:
ove erroreData() è un metodo che mi evidenzia in rosso la label del campo...codice:if(nascitaString.length() == 10){ int indicePunti = nascitaString.indexOf('/'); if(indicePunti == 4) { String nascitaAnno = nascitaString.substring(0, indicePunti); String nascitaResto = nascitaString.substring(indicePunti+1); int indiceResto = nascitaResto.indexOf('/'); if(indiceResto == 2){ nascitaResto = nascitaResto.substring(indiceResto+1); if (nascitaResto.length() != 2) erroreData(); } else erroreData(); } else erroreData(); } else erroreData();
La possibilità 2) mi sembra un po' costruita e non so neanche se sia scritta bene...
voi che mi dite a riguardo? Ripeto che il mio scopo è esclusivamente quello di controllare che la data sia stata scritta bene. Il formato deve essere per forza aaaa/MM/gg perché è quello che è nel database sql dove poi dovrò scrivere il dato ottenuto.
Grazie mille a tutti quelli che mi vorranno rispondere e un grazie in più a chi lo farà presto :-)

Rispondi quotando