On Thu, 18 Jul 2024 11:32:47 GMT, Shaojin Wen <d...@openjdk.org> wrote:

> class LocalTime {
>     public String toString() {
>         // ...
>                 if (nanoValue % 1000_000 == 0) {
>                     buf.append(Integer.toString((nanoValue / 1000_000) + 
> 1000).substring(1));
>                 } else if (nanoValue % 1000 == 0) {
>                     buf.append(Integer.toString((nanoValue / 1000) + 
> 1000_000).substring(1));
>                 } else {
>                     buf.append(Integer.toString((nanoValue) + 
> 1000_000_000).substring(1));
>                 }
>        // ...
>     }
> }
> 
> Currently, LocalTime.toString handles nanos by adding a value and then 
> subString(1) to fill it with zeros. Using StringBuilder.repeat is more 
> concise and has better performance.

DateTimeFormatterBuilder uses DecimalStyle.getZeroDigit(), and printFixedWidth 
does not meet the requirements.

The scenario where LocalDate.toString handles Year is very simple, and repeat 
can be used directly. 

printFixedWidth requires three different calls in LocalTime.toString. 

Is there a good reason to extract it into a public method? I do not reject this 
approach, but I do not fully support it.

-------------

PR Comment: https://git.openjdk.org/jdk/pull/20232#issuecomment-2236644193

Reply via email to