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.