Преобразуйте заданное время с точностью до наносекунды, используя java

#java #time

#java — язык #время #java

Вопрос:

мой код:

 String timeColonPattern = "HH:mm:ss.SSSSSSSSS";             
DateTimeFormatter timeColonFormatter = DateTimeFormatter.ofPattern(timeColonPattern);
LocalTime colonTime = LocalTime.parse("09:30:23.187235");
  

Я хочу, чтобы «09:30:23.187235» было преобразовано в наносекундную точность. colonTime совпадает с 09:30: 23.187235, но я хочу, чтобы оно было преобразовано в 09:30: 23.187235000. т. е. Оно должно добавлять нули, если цифры после запятой меньше 9. Есть какие-нибудь предложения, как я могу этого добиться?

Комментарии:

1. если вы сделаете это, вы не добавите точности, вы просто притворитесь, что добавляете точность. То, что вы добавляете, — это жестко заданные значения 0, это другое дело

2. LocalTime имеет точность в наносекунду. Вам не нужно ничего делать.

3. Если время указано в миллисекундах или микросекундах, то я хочу, чтобы оно добавляло дополнительные нули, но это не добавляет дополнительных нулей.

4. Не удается воспроизвести: ideone.com/tCMwHw

5. Я не использовал .format(). Извините. Теперь я получаю желаемый результат. Спасибо

Ответ №1:

LocalTime уже имеет наносекундную точность. Если вы хотите, чтобы выводилась такая точность, не используйте .SSSSSSSSS шаблон, а используйте .nnnnnnnnn :

 LocalTime colonTime = LocalTime.parse("09:30:23.187235");
System.out.println(
    DateTimeFormatter.ofPattern("HH:mm:ss.nnnnnnnnn")
                     .format(colonTime)
);
  

Смотрите, как этот код выполняется в IdeOne.com .

09:30:23.187235000

Все возможные шаблоны см. в DateTimeFormatter классе.

Комментарии:

1. Я не использовал .format(). Извините. Теперь я получаю желаемый результат. Спасибо

2. SSSSSSSSS тоже работает. Важной частью является просто использование форматера для форматирования при печати.