Heim > Java > javaLernprogramm > Hauptteil

Warum kann das Paket „java.time' von Java 8 Sekundenbruchteile im strikten Modus nicht analysieren?

Mary-Kate Olsen
Freigeben: 2024-11-02 00:35:31
Original
508 Leute haben es durchsucht

Why Does Java 8's `java.time` Package Fail to Parse Fraction-of-Second Values in Strict Mode?

Kann java.time den Bruchteil einer Sekunde nicht analysieren?

Mit der ersten Veröffentlichung von Java 8 ist das Parsen des Bruchteils einer Sekunde mit java.time nicht möglich Das Paket kann auf eine Ausnahme stoßen. Betrachten Sie diesen Code:

<code class="java">String input = "2011120312345655";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSS");
LocalDateTime localDateTime = LocalDateTime.parse(input, formatter);</code>
Nach dem Login kopieren

Dieser Code schlägt mit einer Ausnahme fehl:

java.time.format.DateTimeParseException
Nach dem Login kopieren

In der Dokumentation heißt es, dass der strikte Modus die gleiche Anzahl an Formatzeichen wie Eingabeziffern erfordert. Allerdings enthält der Code „SS“ für Sekundenbruchteile, was im Widerspruch zur Anzahl der Ziffern in der Eingabe steht.

Um dieses Problem zu beheben, wurde eine Problemumgehung vorgeschlagen:

<code class="java">DateTimeFormatter dtf =
  new DateTimeFormatterBuilder()
  .appendPattern("yyyyMMddHHmmss")
  .appendValue(ChronoField.MILLI_OF_SECOND, 3)
  .toFormatter();</code>
Nach dem Login kopieren

Diese Problemumgehung deckt jedoch den Anwendungsfall von nur zwei „S“-Mustersymbolen nicht vollständig ab. Andere Felder wie MICRO_OF_SECOND (sechs SSSSSS) oder NANO_OF_SECOND (neun SSSSSSSS) müssen verwendet werden.

Laut Dokumentation:

"Fraction: Gibt das Nanosekundenfeld als Bruch aus. (...) Beim Parsen im strikten Modus muss die Anzahl der analysierten Ziffern mit der Anzahl der Musterbuchstaben übereinstimmen .

Lösung in Java 9

Ab Java 9 wurde das Problem behoben. Bei der ersten Version von Java 8 gab es Schwierigkeiten bei der Implementierung der Nachbarwertanalyse für Bruchteile. Diese Einschränkung behinderte die Interpretation von Feldern in Texten, die sich über mehrere Felder ohne klare Grenzen erstreckten.

In Java 9 erhielt der JSR-310-Parser jedoch die Möglichkeit, Bruchteile bei der Analyse benachbarter Werte zu analysieren. Diese Verbesserung geht auf die Herausforderungen früherer Versionen ein und bietet mehr Flexibilität beim Arbeiten mit Sekundenbruchteilen.

Das obige ist der detaillierte Inhalt vonWarum kann das Paket „java.time' von Java 8 Sekundenbruchteile im strikten Modus nicht analysieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!