Skip to content

Commit 019c72b

Browse files
committed
ICU-23278 Fix ldml2icu metazones
1 parent 0dd8ee9 commit 019c72b

File tree

5 files changed

+37
-5
lines changed

5 files changed

+37
-5
lines changed

icu4c/source/data/misc/metaZones.txt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1261,6 +1261,11 @@ metaZones:table(nofallback){
12611261
"1990-03-20 22:00",
12621262
"1994-03-20 22:00",
12631263
}
1264+
{
1265+
"Africa_Western",
1266+
"1994-03-20 22:00",
1267+
"2017-10-23 22:00",
1268+
}
12641269
{
12651270
"Africa_Central",
12661271
"2017-10-23 22:00",
@@ -3837,6 +3842,18 @@ metaZones:table(nofallback){
38373842
"Europe_Central",
38383843
}
38393844
}
3845+
"Europe:Dublin"{
3846+
{
3847+
"Irish",
3848+
"1970-01-01 00:00",
3849+
"1971-10-31 02:00",
3850+
}
3851+
{
3852+
"GMT",
3853+
"1971-10-31 02:00",
3854+
"9999-12-31 23:59",
3855+
}
3856+
}
38403857
"Europe:Gibraltar"{
38413858
{
38423859
"Europe_Central",

icu4c/source/test/intltest/tztest.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2395,9 +2395,16 @@ static struct {
23952395

23962396
// Repeating the test data for DST. The test data below trigger the problem reported
23972397
// by Ticket#6644
2398+
{"Europe/London", "en", false, TimeZone::SHORT, "GMT" /*"BST"*/},
2399+
{"Europe/London", "en", false, TimeZone::LONG, "Greenwich Mean Time"},
23982400
{"Europe/London", "en", true, TimeZone::SHORT, "GMT+1" /*"BST"*/},
23992401
{"Europe/London", "en", true, TimeZone::LONG, "British Summer Time"},
24002402

2403+
{"Europe/Dublin", "en", false, TimeZone::SHORT, "GMT" /*"IST"*/},
2404+
{"Europe/Dublin", "en", false, TimeZone::LONG, "Greenwich Mean Time"},
2405+
{"Europe/Dublin", "en", true, TimeZone::SHORT, "GMT+1" /*"IST"*/},
2406+
{"Europe/Dublin", "en", true, TimeZone::LONG, "Irish Standard Time"},
2407+
24012408
{nullptr, nullptr, false, TimeZone::SHORT, nullptr} // nullptr values terminate list
24022409
};
24032410

icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/TimeZoneFormatTest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -946,6 +946,15 @@ public void TestFormat() {
946946
"\u65E5\u672C\u6A19\u6E96\u6642", // "日本標準時"
947947
TimeType.UNKNOWN
948948
},
949+
// Regression test for ICU-23278
950+
{
951+
"en",
952+
"Europe/Dublin",
953+
dateJan,
954+
Style.SPECIFIC_LONG,
955+
"Greenwich Mean Time",
956+
TimeType.STANDARD
957+
}
949958
};
950959

951960
for (Object[] testCase : TESTDATA) {
Binary file not shown.

tools/cldr/cldr-to-icu/src/main/resources/ldml2icu_supplemental.txt

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -319,14 +319,13 @@
319319
# metaZones.xml - metaZones.txt
320320
//supplementalData/metaZones/mapTimezones[@type="metazones"]/mapZone[@type="(%A)"][@other="(%W)"][@territory="(%W)"] ; /mapTimezones/$2/$3 ; values=$1
321321
//supplementalData/metaZones/metazoneInfo/timezone[@type="(%W)"]/usesMetazone[@mzone="(%W)"] ; /metazoneInfo/"$1"/<$2> ; values=$2
322-
# For the from/to entries, ignore any stdOffset/dstOffset values for now, see CLDR-18880.
323-
# Aalso note the path ordering of stdOffset/dstOffset vs mzone is odd, filed CLDR-18921 about that.
324322
//supplementalData/metaZones/metazoneInfo/timezone[@type="(%W)"]/usesMetazone[@from="(%A)"][@mzone="(%W)"] ; /metazoneInfo/"$1"/<$2> ; values=$3 "$2" "9999-12-31 23:59"
325323
//supplementalData/metaZones/metazoneInfo/timezone[@type="(%W)"]/usesMetazone[@from="(%A)"][@to="(%A)"][@mzone="(%W)"] ; /metazoneInfo/"$1"/<$2> ; values=$4 "$2" "$3"
326324
//supplementalData/metaZones/metazoneInfo/timezone[@type="(%W)"]/usesMetazone[@to="(%A)"][@mzone="(%W)"] ; /metazoneInfo/"$1"/<1970-01-01 00:00> ; values=$3 "1970-01-01 00:00" "$2"
327-
//supplementalData/metaZones/metazoneInfo/timezone[@type="(%W)"]/usesMetazone[@from="(%A)"][@stdOffset="(%A)"][@dstOffset="(%A)"][@mzone="(%W)"] ; /metazoneInfo/"$1"/<$2> ; values=$5 "$2" "9999-12-31 23:59"
328-
//supplementalData/metaZones/metazoneInfo/timezone[@type="(%W)"]/usesMetazone[@from="(%A)"][@to="(%A)"][@stdOffset="(%A)"][@dstOffset="(%A)"][@mzone="(%W)"] ; /metazoneInfo/"$1"/<$2> ; values=$6 "$2" "$3"
329-
//supplementalData/metaZones/metazoneInfo/timezone[@type="(%W)"]/usesMetazone[@to="(%A)"][@stdOffset="(%A)"][@dstOffset="(%A)"][@mzone="(%W)"] ; /metazoneInfo/"$1"/<1970-01-01 00:00> ; values=$5 "1970-01-01 00:00" "$2"
325+
# Ignore any stdOffset/dstOffset values for now, see CLDR-18880.
326+
//supplementalData/metaZones/metazoneInfo/timezone[@type="(%W)"]/usesMetazone[@from="(%A)"][@mzone="(%W)"][@stdOffset="(%A)"][@dstOffset="(%A)"] ; /metazoneInfo/"$1"/<$2> ; values=$3 "$2" "9999-12-31 23:59"
327+
//supplementalData/metaZones/metazoneInfo/timezone[@type="(%W)"]/usesMetazone[@from="(%A)"][@to="(%A)"][@mzone="(%W)"][@stdOffset="(%A)"][@dstOffset="(%A)"] ; /metazoneInfo/"$1"/<$2> ; values=$4 "$2" "$3"
328+
//supplementalData/metaZones/metazoneInfo/timezone[@type="(%W)"]/usesMetazone[@to="(%A)"][@mzone="(%W)"][@stdOffset="(%A)"][@dstOffset="(%A)"] ; /metazoneInfo/"$1"/<1970-01-01 00:00> ; values=$3 "1970-01-01 00:00" "$2"
330329
#
331330
//supplementalData/metaZones/metazoneIds/metazoneId[@shortId="(%A)"][@longId="(%A)"][@deprecated="false"] ; /metazoneIds/$1 ; values=$2
332331

0 commit comments

Comments
 (0)