Heim  >  Artikel  >  Java  >  Kann Java.time Bruchteile von Sekunden vor Java 9 analysieren?

Kann Java.time Bruchteile von Sekunden vor Java 9 analysieren?

Susan Sarandon
Susan SarandonOriginal
2024-11-01 16:11:02399Durchsuche

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

Kann java.time Sekundenbruchteile nicht analysieren?

Einführung

Mit der ersten Veröffentlichung von Java 8 erschien das Paket java.time ein Problem beim Parsen von Sekundenbruchteilen haben. Dieses Problem trat auf, wenn „SS“ zum DateTimeFormatter-Muster hinzugefügt wurde, um Sekundenbruchteile darzustellen, und eine Ausnahme aufgetreten ist.

Das Problem

Beim Versuch, einen Sekundenbruchteil zu analysieren, wie durch angegeben „SS“-Muster, eine Ausnahme wurde ausgelöst. Dies war überraschend, da in der Dokumentation darauf hingewiesen wurde, dass dies hätte funktionieren sollen.

Die Lösung

Dieses Problem wurde später gemeldet und in Java 9 behoben. Bis zur Veröffentlichung von Java 9 ist jedoch eine Problemumgehung erforderlich . Wie im JDK-Fehlerbericht erwähnt, kann die folgende Problemumgehung verwendet werden:

DateTimeFormatter dtf =
  new DateTimeFormatterBuilder()
  .appendPattern("yyyyMMddHHmmss")
  .appendValue(ChronoField.MILLI_OF_SECOND, 3)
  .toFormatter();

Das Problem und seine Auswirkungen

Der Kern des Problems liegt darin, wie der Sekundenbruchteil wann analysiert wird Zeichen liegen nebeneinander. Das Parsen benachbarter Werte wird nur von appendValue(...)-Methoden unterstützt, die numerische Darstellungen annehmen. Die appendFraction(...)-Methode, die intern vom Bruchteil verwendet wird, übernimmt nicht das Parsen benachbarter Werte. Diese Einschränkung verhindert die korrekte Interpretation von Sekundenbruchteilen, wenn das Muster benachbarte Ziffern enthält.

Alternativen und Updates

Die oben beschriebene Problemumgehung behebt das Problem, ist jedoch möglicherweise nicht für alle Anwendungsfälle ideal. Weitere Alternativen sind:

  • Verwendung von SimpleDateFormat, aber beachten Sie, dass es den Bruch möglicherweise falsch interpretiert.
  • Warten bis Java 9 (oder höher) auf den offiziellen Fix.
  • Verwendung einer Drittanbieter-Bibliothek wie Joda-Time oder Time4J.

Update: Java 9 Fix

In Java 9 wurde das Problem behoben. Der Sekundenbruchteil kann jetzt mithilfe des Musters „SS“ oder, für eine höhere Präzision, mithilfe der Felder ChronoField.MICRO_OF_SECOND oder ChronoField.NANO_OF_SECOND korrekt analysiert werden.

Das obige ist der detaillierte Inhalt vonKann Java.time Bruchteile von Sekunden vor Java 9 analysieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn