Мне нужно преобразовать строку в LocalTime (java-8, а не joda), которая может иметь или не иметь nanoOfSeconds в строке. Формат строки имеет форму 07:06:05
или 07:06:05.123456
. Строка может иметь или не иметь десятичного знака в секундах, и когда это так, может быть любое количество символов для представления части наносекунд.
Использование DateTimeForamtter, например
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("H:mm:ss");
or
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("H:mm:ss.SSSSSS");
Я могу использовать оператор IF, чтобы различать два формата, например:
DateTimeFormatter dtf;
if (time1.contains(".") {
dtf = DateTimeFormatter.ofPattern("H:mm:ss.SSSSSS);
} else {
dtf = DateTimeFormatter.ofPattern("H:mm:ss);
}
Это отлично работает, и я согласен с этим, но мне нужно также использовать различное количество позиций после запятой.
Примерный набор данных может быть:
[11:07:59.68750, 11:08:00.781250, 11:08:00.773437500, 11:08:01]
Есть ли способ разрешить средство форматирования анализировать любое количество цифр после запятой без выдачи java.time.format.DateTimeParseException
, когда количество десятичных знаков неизвестно?
Я надеюсь, что упустил что-то действительно простое.
if (stringValue.length() > 7) { //use second formatter } else if (stringValue.length() == 7) { //use first formatter }
Я не уверен, что понял второй вопрос, не могли бы вы уточнить? - person Blake Yarbrough   schedule 11.06.2015