On Tue, 7 Nov 2023 13:45:54 GMT, Claes Redestad <redes...@openjdk.org> wrote:
>> test/jdk/java/util/Formatter/BasicDateTime.java line 473: >> >>> 471: "%tF", >>> 472: >>> DecimalFormatSymbols.getInstance(localeEuES).getMinusSign() + "2023-01-13", >>> 473: LocalDate.of(-2023, 1, 13)); >> >> Needs some comments here, otherwise it would be a bit cryptic. Also, "eu-ES" >> locale using `\u2212` depends on the current CLDR implementation, so you >> might want to check all locales with `Locale.availableLocale()`. > > While it might be reasonable to localize using `getMinusSign()` this will > introduce a new inconsistency with `DateTimeFormatter` (which *does not* > localize minus signs in front of years): > > int minus = DecimalFormatSymbols.getInstance(Locale.forLanguageTag("eu-ES")) > .getMinusSign() > minus ==> 8722 > > int first = DateTimeFormatter.ISO_DATE > .withLocale(Locale.forLanguageTag("eu-ES")) > .format(ZonedDateTime.now() > .minus(4000, java.time.temporal.ChronoUnit.YEARS) > .charAt(0) > first ==> 45 Within java.util.Formatter, the year formatter supports only the range [0,9999]. Only ISO_STANDARD_DATE has a ISO 8601 format defined for numbers outside that range. The formatting in java.time is defined over the full range of years. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/16033#discussion_r1385067362