Maison >Java >javaDidacticiel >Pourquoi java.time ne parvient-il pas à analyser une fraction de seconde malgré la documentation ?
java.time Impossible d'analyser la fraction de seconde
Malgré le respect de la documentation, analyse de la fraction de seconde avec Java. le temps rencontre des problèmes. Cet article explore le problème et propose des solutions alternatives jusqu'à ce que le problème soit résolu.
Le problème
Lors de l'utilisation de DateTimeFormatter pour analyser une chaîne avec une fraction de seconde (représentée par "SS"), une exception est levée. Ce comportement contredit l'affirmation de la documentation selon laquelle le mode strict fait correspondre le nombre de caractères de format aux chiffres saisis.
Solutions de contournement possibles
Jusqu'à ce que Java 9 (ou version ultérieure) résolve ce problème, plusieurs solutions de contournement sont disponibles :
<code class="java">DateTimeFormatter dtf = new DateTimeFormatterBuilder() .appendPattern("yyyyMMddHHmmss") .appendValue(ChronoField.MILLI_OF_SECOND, 3) .toFormatter();</code>
Remarque : Cette approche ne peut pas gérer les cas avec seulement deux symboles de modèle (par exemple, "SS").
<code class="java">String input = "2011120312345655"; SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSS"); Date d = sdf.parse(input);</code>
Cependant, cette solution de contournement peut également mal interpréter une fraction de -valeurs en secondes.
Les bibliothèques externes comme Joda-Time ou Time4J prennent en charge l'analyse en fractions de seconde. Par exemple, en utilisant Joda-Time :
<code class="java">String input = "2011120312345655"; DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyyMMddHHmmssSS"); System.out.println(dtf.parseLocalDateTime(input));</code>
Hacky Solutions :
On pourrait extraire manuellement la partie fractionnaire de la chaîne d'entrée et appliquer des ajustements, mais cette approche est sujet aux erreurs.
Conclusion
L'analyse des valeurs de fraction de seconde à l'aide de java.time a actuellement des limites. Jusqu'à ce que Java 9 résolve ce problème, les utilisateurs peuvent utiliser les solutions de contournement décrites ci-dessus. Il convient également de noter que SimpleDateFormat peut également mal interpréter les valeurs en fractions de seconde. Pour des résultats définitifs, il est recommandé d'utiliser des bibliothèques externes comme Joda-Time ou Time4J.
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!