#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
тоже работает. Важной частью является просто использование форматера для форматирования при печати.