On Thu, 5 Feb 2026 17:27:22 GMT, Naoto Sato <[email protected]> wrote:

> Fixing the Windows default time zones returned from `TimeZone.getDefault()` 
> for some regions. On Windows, it uses their own regions for time zones that 
> aren't 1-1 match to IANA's TZ database. Thus a mapping table is created as 
> `conf/tzmappings` on Windows Java runtime. It is derived from CLDR's 
> `windowsZones.xml` but it uses the obsolete IANA ids for their compatibility 
> reasons. The fix is to replace the CLDR's old ids to the latest IANA ids for 
> those regions.
> Since it is hard to provide an automated test, as it involves the 
> modification of the Windows' default time zone, regression test is not 
> provided. Instead the fix is manually confirmed using the JIRA issue's 
> example. Since this is a change in behavior, I will file a corresponding 
> CSR/RN.
> 
> Here is the diff of the generated `conf/tzmappings` for reference:
> 
> @@ -13,7 +13,7 @@
>  Arabian Standard Time:ZZ:Etc/GMT-4:
>  Arabian Standard Time:001:Asia/Dubai:
>  Arabic Standard Time:001:Asia/Baghdad:
> -Argentina Standard Time:001:America/Buenos_Aires:
> +Argentina Standard Time:001:America/Argentina/Buenos_Aires:
>  Astrakhan Standard Time:001:Europe/Astrakhan:
>  Atlantic Standard Time:BM:Atlantic/Bermuda:
>  Atlantic Standard Time:GL:America/Thule:
> @@ -58,7 +58,7 @@
>  Central European Standard Time:MK:Europe/Skopje:
>  Central European Standard Time:001:Europe/Warsaw:
>  Central Pacific Standard Time:AQ:Antarctica/Casey:
> -Central Pacific Standard Time:FM:Pacific/Ponape:
> +Central Pacific Standard Time:FM:Pacific/Pohnpei:
>  Central Pacific Standard Time:NC:Pacific/Noumea:
>  Central Pacific Standard Time:VU:Pacific/Efate:
>  Central Pacific Standard Time:ZZ:Etc/GMT-11:
> @@ -75,7 +75,7 @@
>  Dateline Standard Time:001:Etc/GMT+12:
>  E. Africa Standard Time:AQ:Antarctica/Syowa:
>  E. Africa Standard Time:DJ:Africa/Djibouti:
> -E. Africa Standard Time:ER:Africa/Asmera:
> +E. Africa Standard Time:ER:Africa/Asmara:
>  E. Africa Standard Time:ET:Africa/Addis_Ababa:
>  E. Africa Standard Time:KM:Indian/Comoro:
>  E. Africa Standard Time:MG:Indian/Antananarivo:
> @@ -101,10 +101,10 @@
>  FLE Standard Time:FI:Europe/Helsinki:
>  FLE Standard Time:LT:Europe/Vilnius:
>  FLE Standard Time:LV:Europe/Riga:
> -FLE Standard Time:001:Europe/Kiev:
> +FLE Standard Time:001:Europe/Kyiv:
>  Fiji Standard Time:001:Pacific/Fiji:
>  GMT Standard Time:ES:Atlantic/Canary:
> -GMT Standard Time:FO:Atlantic/Faeroe:
> +GMT Standard Time:FO:Atlantic/Faroe:
>  GMT Standard Time:GG:Europe/Guernsey:
>  GMT Standard Time:IE:Europe/Dublin:
>  GMT Standard Time:IM:Europe/Isle_of_Man:
> @@ -115,7 +115,7 @@
>  GTB St...

make/jdk/src/classes/build/tools/cldrconverter/CLDRConverter.java line 296:

> 294: 
> 295:         // Parse data independent of locales
> 296:         parseBCP47();

Perhaps a comment either here or in `bcp47()` which indicates that parseBCP47 
**must** precede `parseSupplemental()` such that the aliases can be derived 
from _timezone.xml_ first.

make/jdk/src/classes/build/tools/cldrconverter/TimeZoneParseHandler.java line 
45:

> 43: class TimeZoneParseHandler extends AbstractLDMLHandler<Object> {
> 44:     private static final String PREF_PREFIX = "preferred:";
> 45:     private final Map<String, String> ianaAliasMap = 
> HashMap.newHashMap(32);

To give a sense of understanding, I recommend adding a comment indicating that 
the size of the `ianaAliasMap` can be estimated from the number of `iana` 
attributes present in _timezone.xml_. Including the CLDR version in this 
comment would help with locating and updating the size when CLDR data is 
upgraded in the JDK.

make/jdk/src/classes/build/tools/cldrconverter/TimeZoneParseHandler.java line 
72:

> 70:                     if (iana != null) {
> 71:                         for (var a : alias.split("\\s+")) {
> 72:                             ianaAliasMap.put(a, iana);

I think we should add a check to not add `a` to the `ianaAliasMap` if `a` is 
equal to `iana`, since the mapping would be identical. E.g. "Asia/Kolkata" -> 
"Asia/Kolkata".

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

PR Review Comment: https://git.openjdk.org/jdk/pull/29591#discussion_r2771466800
PR Review Comment: https://git.openjdk.org/jdk/pull/29591#discussion_r2771442549
PR Review Comment: https://git.openjdk.org/jdk/pull/29591#discussion_r2771318244

Reply via email to