SimpleDateFormat produisant une date et une heure incorrectes lors de l'analyse de "AAAA-MM-jj HH:mm"
Lors de la tentative de conversion d'une représentation sous forme de chaîne de une date et une heure au format « AAAA-MM-jj HH:mm » à un objet Date à l'aide de SimpleDateFormat, des résultats incorrects peuvent être obtenus. Comme illustré ci-dessous, le code produit une sortie inattendue :
<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>
La sortie attendue devrait être "Jeudi 18 mars 08:30:00 EST 2013", mais le code produit par erreur "Dim. 30 décembre 08:30". :00 EST 2012".
La cause du problème réside dans le motif AAAA mal saisi dans le Constructeur SimpleDateFormat. Le modèle correct pour le format de date et d'heure spécifié est aaaa, avec y minuscule pour les années.
Pour résoudre ce problème, modifiez le modèle SimpleDateFormat comme suit :
<code class="java">SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.ENGLISH);</code>
En mettant à jour le modèle , l'objet SimpleDateFormat analysera désormais correctement la chaîne de date et d'heure, ce qui donnera la sortie souhaitée : "Jeudi 18 mars 08:30:00 EST 2013".
Il est important de noter que même si Lenient est désactivé dans ce code, il n'est généralement pas recommandé de le désactiver. Dans la plupart des cas, il est préférable de gérer les erreurs d'analyse avec élégance plutôt que d'analyser potentiellement des données incorrectes.
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!