[tz] OpenJDK/CLDR/ICU/Joda issues with Ireland change

Yoshito Umaoka yoshito_umaoka at us.ibm.com
Thu Jan 25 19:52:55 UTC 2018


> So just to be clear, CLDR *could* support a Europe/Dublin that had 
> an independent metazone with <standard>Irish Standard Time</
> standard><daylight>Greenwich Mean Time</daylight>, it's just that 
> synchronizing such a change with the tzdb change is intractable, right?
> 
> (that version number field is looking more and more important...)
> 

If we need a single TZ DB zone has changing names time to time, we create
what we call "meta zone", and define a set of short/long - 
standard/daylight
/generic name for the meta zone.

For example,

----
Zone America/North_Dakota/Center -6:45:12 - LMT 1883 Nov 18 12:14:48
                        -7:00   US      M%sT    1992 Oct 25  2:00
                        -6:00   US      C%sT
----

CLDR define meta zones 

            <metazone type="America_Central">
                <long>
                    <generic>Central Time</generic>
                    <standard>Central Standard Time</standard>
                    <daylight>Central Daylight Time</daylight>
                </long>
                <short>
                    <generic>CT</generic>
                    <standard>CST</standard>
                    <daylight>CDT</daylight>
                </short>
            </metazone>

            <metazone type="America_Mountain">
                <long>
                    <generic>Mountain Time</generic>
                    <standard>Mountain Standard Time</standard>
                    <daylight>Mountain Daylight Time</daylight>
                </long>
                <short>
                    <generic>MT</generic>
                    <standard>MST</standard>
                    <daylight>MDT</daylight>
                </short>
            </metazone>

These meta zone display names are translated for various locales.

Then, we have historic zone -> meta zone mapping data as below:

            <timezone type="America/North_Dakota/Center">
                <usesMetazone to="1992-10-25 08:00" 
mzone="America_Mountain"/>
                <usesMetazone from="1992-10-25 08:00" 
mzone="America_Central"/>
            </timezone>


So, when CLDR consumer code such as ICU want to show time zone display 
name
at a given time, it looks up which meta zone is used at the time, then 
check standard
or daylight, then retrieve appropriate display name data type.

With above example, if the input time is 2018-01-01T00:00:00Z, then meta 
zone
"America_Central" is resolved with the meta zone mapping data above. ICU 
uses
data generated from tz database and detect the date fall into standard 
time. Then
zone name for standard in meta zone "America_Central" is used.


At this moment, "Irish Standard Time" is set to zone directly, but if we 
need more
historic names, we can create a new meta zone, define a set of name there, 
and add
it to zone-to-meta-zone mapping data.


-Yoshito


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mm.icann.org/pipermail/tz/attachments/20180125/61aa28e7/attachment-0001.html>


More information about the tz mailing list