Sto utilizzando java.text.SimpleDateFormat
per analizzare stringhe del modulo "yyyyMMdd"
.Rendere SimpleDateFormat.parse() non valido per le date non valide (ad esempio mese è maggiore di 12)
Se provo a analizzare una stringa con un mese maggiore di 12, anziché fallire, si sposta verso l'anno successivo. Pieno Repro eseguibile:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class ParseDateTest {
public static void main(String[] args) throws ParseException {
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
Date result = format.parse("20091504"); // <- should not be a valid date!
System.out.println(result); // prints Thu Mar 04 00:00:00 CST 2010
}
}
avrei preferito un ParseException
gettato.
Esiste un modo non hacky per forzare l'eccezione a verificarsi ?. Voglio dire, non voglio controllare manualmente se il mese è maggiore di 12. Questo è un po 'ridicolo.
Grazie per qualsiasi suggerimento.
NOTA: Conosco già Joda Time, ma ho bisogno di farlo in JDK semplice senza librerie esterne.
Grazie mille. Questo ha fatto il trucco. Incredibile come fare domande qui dà risultati più veloci della ricerca su google (o faccio schifo alla ricerca :). –
+1 per l'unico rivestimento. Lo stackoverflow –
dovrebbe consentire agli utenti di fornire più di 1 punto alle risposte e questa è una di quelle risposte. Stavo facendo qualche ridicola corrispondenza di pattern prima di analizzare con 'SimpleDateFormat'. Molte grazie. –