SimpleDateFormat analyse incorrectement "AAAA-MM-jj HH:mm"
Lors de la tentative d'analyse d'une chaîne au format "AAAA-MM -dd HH:mm" à une date, certains développeurs rencontrent des résultats de date inattendus. Cela se produit lors de l'utilisation de la classe SimpleDateFormat avec le paramètre lenient défini sur false.
L'extrait de code suivant illustre le problème :
<code class="java">Date newDate = null; String dateTime = "2013-03-18 08:30"; SimpleDateFormat df = new SimpleDateFormat("YYYY-MM-dd HH:mm", Locale.ENGLISH); df.setLenient(false); try { newDate = df.parse(dateTime); } catch (ParseException e) { throw new InvalidInputException("Invalid date input."); }</code>
Ce code produit une date incorrecte :
Sun Dec 30 08:30:00 EST 2012 (wrong)
Pour résoudre ce problème, vérifiez que le format de l'année spécifié dans le modèle SimpleDateFormat est "aaaa" minuscule au lieu de "AAAA" majuscule.
<code class="java">SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.ENGLISH);</code>
En effectuant cet ajustement, le code analysera le La chaîne "AAAA-MM-jj HH:mm" est correcte. Consultez la documentation SimpleDateFormat pour plus d'informations.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!