Avec la version initiale de Java 8, l'analyse d'une fraction de seconde à l'aide de java.time Le package peut rencontrer une exception. Considérez ce code :
<code class="java">String input = "2011120312345655"; DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSS"); LocalDateTime localDateTime = LocalDateTime.parse(input, formatter);</code>
Ce code échoue avec une exception :
java.time.format.DateTimeParseException
La documentation indique que le mode strict nécessite le même nombre de caractères de format que les chiffres d'entrée. Cependant, le code inclut « SS » pour fraction de seconde, ce qui contredit le nombre de chiffres saisis.
Pour résoudre ce problème, une solution de contournement a été suggérée :
<code class="java">DateTimeFormatter dtf = new DateTimeFormatterBuilder() .appendPattern("yyyyMMddHHmmss") .appendValue(ChronoField.MILLI_OF_SECOND, 3) .toFormatter();</code>
Toutefois, cette solution de contournement ne couvre pas entièrement le cas d’utilisation de seulement deux symboles de modèle « S ». D'autres champs comme MICRO_OF_SECOND (six SSSSSS) ou NANO_OF_SECOND (neuf SSSSSSSSSS) doivent être utilisés.
Selon la documentation :
"Fraction : génère le champ nano-de-seconde sous forme de fraction- de seconde. (...) Lors de l'analyse en mode strict, le nombre de chiffres analysés doit correspondre au nombre de lettres de modèle. "
Cela implique que "S" représente n'importe quelle fraction de seconde, pas seulement des millisecondes. .
Depuis Java 9, le problème a été résolu. La version initiale de Java 8 a rencontré des difficultés lors de la mise en œuvre de l'analyse des valeurs adjacentes pour les parties fractionnaires. Cette limitation entravait l'interprétation des champs dans un texte qui s'étendaient sur plusieurs champs sans limites claires.
Cependant, dans Java 9, l'analyseur JSR-310 a acquis la capacité d'analyser des parties fractionnaires dans l'analyse de valeurs adjacentes. Cette amélioration répond aux défis rencontrés dans les versions précédentes et offre une flexibilité accrue lors de l'utilisation de valeurs de fractions de seconde.
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!