Purtroppo fmt.setLenient (false); non otterrà la formattazione di data rigorosa. Ne aiuta alcuni, ad esempio l'analisi di "2010-09-01" utilizzando il formato "yyyyMMdd" avrà esito positivo se lenente == true, ma il risultato è molto bizzarro: 2009/12/09.
Anche se lenente == false parse() agisce ancora indulgente. "2010/01/5" è consentito per lo schema "aaaa/MM/gg". E il disaccordo sui dati come "1999/2011" per il modello "yyyy/aaaa" è tollerato (resa nel 2011). I rifiuti sono consentiti anche dopo la corrispondenza del modello. Ad esempio: "20100901" e "20100901andGarbage" corrisponderanno entrambi "aaaaMMgg".
Ho scritto un'estensione di SimpleDateFormat che applica la corrispondenza del modello rigorosa. Potete trovare qui:
SimpleDateFormat.parse() ignores the number of characters in pattern
Nel mio formato di versione() e parse() sono inverse funzionali. Questo è quello che penso che la maggior parte delle persone si aspetterebbe.
fonte
2016-02-05 20:07:51
può o non può risolvere il tuo problema ma, se hai a che fare con date in Java, ti raccomando caldamente la libreria Joda Time – Eduardo