Avec la version initiale de Java 8, le package java.time est apparu avoir un problème pour analyser les fractions de secondes. Ce problème est survenu lors de l'ajout de "SS" au modèle DateTimeFormatter pour représenter des fractions de secondes et de la rencontre d'une exception.
Lors de la tentative d'analyse d'une fraction de seconde, comme spécifié par le Modèle "SS", une exception a été levée. C'était surprenant car la documentation indiquait que cela aurait dû fonctionner.
Ce problème a ensuite été signalé et corrigé dans Java 9. Cependant, jusqu'à la sortie de Java 9, une solution de contournement est nécessaire . Comme mentionné dans le rapport de bug du JDK, la solution de contournement suivante peut être utilisée :
DateTimeFormatter dtf = new DateTimeFormatterBuilder() .appendPattern("yyyyMMddHHmmss") .appendValue(ChronoField.MILLI_OF_SECOND, 3) .toFormatter();
Le nœud du problème réside dans la façon dont la fraction de seconde est analysée lorsque les personnages sont adjacents. L'analyse des valeurs adjacentes n'est prise en charge que par les méthodes appendValue(...), qui supposent des représentations numériques. La méthode appendFraction(...), utilisée en interne par la partie fractionnaire, ne gère pas l'analyse des valeurs adjacentes. Cette limitation empêche l'interprétation correcte des fractions de secondes lorsque le modèle contient des chiffres adjacents.
Bien que la solution de contournement ci-dessus résolve le problème, elle n'est peut-être pas idéale pour tous les cas d'utilisation. D'autres alternatives incluent :
Dans Java 9, le problème a été résolu. La fraction de seconde peut désormais être analysée correctement à l'aide du modèle "SS" ou, pour plus de précision, à l'aide des champs ChronoField.MICRO_OF_SECOND ou ChronoField.NANO_OF_SECOND.
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!