Maison >Java >javaDidacticiel >Java.time peut-il analyser des fractions de secondes avant Java 9 ?

Java.time peut-il analyser des fractions de secondes avant Java 9 ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-01 16:11:02489parcourir

 Can Java.time Parse Fractions of Seconds Before Java 9?

Java.time est-il incapable d'analyser des fractions de secondes ?

Introduction

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.

Le problème

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.

La solution

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 problème et ses implications

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.

Alternatives et mises à jour

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 :

  • Utiliser SimpleDateFormat, mais sachez qu'il peut mal interpréter la fraction.
  • Attendre Java 9 (ou version ultérieure) pour le correctif officiel.
  • Utilisation d'une bibliothèque tierce comme Joda-Time ou Time4J.

Mise à jour : Java 9 Fix

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn