A chi non è mai capitato di dover parsare una stringa per convertirla in un oggetto Date?
La cosa è abbastanza banale in Java mediante l'oggetto java.text.SimpleDateFormat, ma va ricordato che il comportamento di default del metodo parse è "indulgente" (Lenient), ovvero effettua il controllo sintattico della stringa ma non semantico.
Cosa vuol dire in pratica? Ad es. la stringa "30/02/2010" è considerata una data valida anche se il 30 febbraio non esiste sul calendario, nessuna eccezione verrà sollevata e la stringa verrà convertita come java.util.Date in 02/03/2010.
Se tale comportamento non è quello che intendiamo ottenere dobbiamo ricordarci di settare a false l'apposita proprietà, come nell'esempio seguente, dove controlliamo che una stringa generica sia una data valida:
public static boolean isDate(String string) {
try {
SimpleDateFormat sf = new SimpleDateFormat("dd/MM/yyyy",Locale.ITALIAN);
sf.setLenient(false);
sf.parse(string);
return true;
} catch (Exception e) {
return false;
}
}
Nessun commento:
Posta un commento