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:
<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“).
<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.
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!