Heim  >  Artikel  >  Java  >  Warum kann java.time trotz Dokumentation den Bruchteil einer Sekunde nicht analysieren?

Warum kann java.time trotz Dokumentation den Bruchteil einer Sekunde nicht analysieren?

Barbara Streisand
Barbara StreisandOriginal
2024-10-28 12:57:02103Durchsuche

Why Does java.time Fail to Parse Fraction-of-Second Despite Documentation?

java.time kann Sekundenbruchteile nicht analysieren

Obwohl die Dokumentation eingehalten wurde, können Sekundenbruchteile mit Java analysiert werden. Die Zeit stößt auf Probleme. In diesem Artikel wird das Problem untersucht und alternative Lösungen bereitgestellt, bis das Problem behoben ist.

Das Problem

Bei Verwendung von DateTimeFormatter zum Parsen einer Zeichenfolge mit Sekundenbruchteilen (dargestellt durch „SS“) wird eine Ausnahme ausgelöst. Dieses Verhalten widerspricht der Behauptung der Dokumentation, dass der strikte Modus die Anzahl der Formatzeichen an Eingabeziffern anpasst.

Mögliche Problemumgehungen

Bis Java 9 (oder höher) dieses Problem behebt, Es stehen mehrere Problemumgehungen zur Verfügung:

  • Verwenden Sie DateTimeFormatterBuilder mit appendValue():
<code class="java">DateTimeFormatter dtf =
  new DateTimeFormatterBuilder()
  .appendPattern("yyyyMMddHHmmss")
  .appendValue(ChronoField.MILLI_OF_SECOND, 3)
  .toFormatter();</code>

Hinweis: Dieser Ansatz behandelt Fälle mit nur zwei möglicherweise nicht Mustersymbole (z. B. „SS“).

  • Verwenden Sie SimpleDateFormat:
<code class="java">String input = "2011120312345655";
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSS");
Date d = sdf.parse(input);</code>

Diese Problemumgehung kann jedoch auch Bruchteile von falsch interpretieren -Sekundenwerte.

  • Verwenden Sie Bibliotheken von Drittanbietern:

Externe Bibliotheken wie Joda-Time oder Time4J unterstützen das Parsen in Sekundenbruchteilen. Zum Beispiel mit Joda-Time:

<code class="java">String input = "2011120312345655";
DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyyMMddHHmmssSS");
System.out.println(dtf.parseLocalDateTime(input));</code>

Hacky Solutions:

Man könnte den Bruchteil manuell aus der Eingabezeichenfolge extrahieren und Anpassungen vornehmen, aber dieser Ansatz ist fehleranfällig.

Fazit

Das Parsen von Sekundenbruchteilen mit java.time unterliegt derzeit Einschränkungen. Bis Java 9 dieses Problem behebt, können Benutzer die oben beschriebenen Problemumgehungen anwenden. Es ist auch erwähnenswert, dass SimpleDateFormat auch Sekundenbruchteile falsch interpretieren kann. Für definitive Ergebnisse wird empfohlen, externe Bibliotheken wie Joda-Time oder Time4J zu verwenden.

Das obige ist der detaillierte Inhalt vonWarum kann java.time trotz Dokumentation den Bruchteil einer Sekunde nicht 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