Coverting String to LocalTime mit / ohne nanoOfSeconds

Ich muss einen String in LocalTime konvertieren (java-8 nicht joda), der möglicherweise nanoOfSeconds enthält oder nicht. Das String-Format hat die Form von07:06:05 oder07:06:05.123456 Die Zeichenfolge kann eine Dezimalstelle in den Sekunden haben oder nicht, und wenn dies der Fall ist, kann es eine beliebige Anzahl von Zeichen geben, die den Nanosekunden-Teil darstellen.

Mit einem DateTimeForamtter wie

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("H:mm:ss");

ode

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("H:mm:ss.SSSSSS");

Ich kann eine IF-Anweisung verwenden, um zwischen den beiden Formaten zu unterscheiden, z. B .:

DateTimeFormatter dtf;
if (time1.contains(".") {
   dtf = DateTimeFormatter.ofPattern("H:mm:ss.SSSSSS);
} else {
   dtf = DateTimeFormatter.ofPattern("H:mm:ss);
}

Dies funktioniert gut und ich bin damit einverstanden, aber ich muss in der Lage sein, auch eine unterschiedliche Anzahl von Stellen nach dem Komma zu verwenden.

Ein Beispieldatensatz könnte sein:

[11:07:59.68750, 11:08:00.781250, 11:08:00.773437500, 11:08:01]

Gibt es eine Möglichkeit, dem Formatierer zu ermöglichen, eine beliebige Anzahl von Stellen nach dem Komma zu analysieren, ohne ein @ auszulösejava.time.format.DateTimeParseException wenn die Anzahl der Nachkommastellen unbekannt ist?

Ich hoffe, ich vermisse etwas wirklich Einfaches.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage