8210490: TimeZone.getDisplayName given Locale.US doesn't always honor the Locale

Specified locale for formatting..

Reviewed-by: naoto
This commit is contained in:
Rachna Goel 2018-09-17 14:16:31 +05:30
parent 6b8fd447cc
commit 36873c3c7b
2 changed files with 18 additions and 7 deletions

View file

@ -281,7 +281,7 @@ public class CLDRTimeZoneNameProviderImpl extends TimeZoneNameProviderImpl {
.replaceFirst("H+", (isShort ? "\\%1\\$d" : "\\%1\\$02d")) .replaceFirst("H+", (isShort ? "\\%1\\$d" : "\\%1\\$02d"))
.replaceFirst("m+", "\\%2\\$02d"); .replaceFirst("m+", "\\%2\\$02d");
return MessageFormat.format(gmtFormat, return MessageFormat.format(gmtFormat,
String.format(hourFormat, offset / 60, offset % 60)); String.format(l, hourFormat, offset / 60, offset % 60));
} }
} }
} }

View file

@ -21,9 +21,9 @@
* questions. * questions.
*/ */
/* /*
* @test * @test
* @bug 8005471 8008577 8129881 8130845 8136518 8181157 * @bug 8005471 8008577 8129881 8130845 8136518 8181157 8210490
* @modules jdk.localedata * @modules jdk.localedata
* @run main/othervm -Djava.locale.providers=CLDR CLDRDisplayNamesTest * @run main/othervm -Djava.locale.providers=CLDR CLDRDisplayNamesTest
* @summary Make sure that localized time zone names of CLDR are used * @summary Make sure that localized time zone names of CLDR are used
@ -51,7 +51,7 @@ public class CLDRDisplayNamesTest {
"\u30a2\u30e1\u30ea\u30ab\u592a\u5e73\u6d0b\u590f\u6642\u9593", "\u30a2\u30e1\u30ea\u30ab\u592a\u5e73\u6d0b\u590f\u6642\u9593",
"GMT-07:00", "GMT-07:00",
//"\u30a2\u30e1\u30ea\u30ab\u592a\u5e73\u6d0b\u6642\u9593", //"\u30a2\u30e1\u30ea\u30ab\u592a\u5e73\u6d0b\u6642\u9593",
//"PT" //"PT"
}, },
{ {
"zh-CN", "zh-CN",
@ -60,7 +60,7 @@ public class CLDRDisplayNamesTest {
"\u5317\u7f8e\u592a\u5e73\u6d0b\u590f\u4ee4\u65f6\u95f4", "\u5317\u7f8e\u592a\u5e73\u6d0b\u590f\u4ee4\u65f6\u95f4",
"GMT-07:00", "GMT-07:00",
//"\u5317\u7f8e\u592a\u5e73\u6d0b\u65f6\u95f4", //"\u5317\u7f8e\u592a\u5e73\u6d0b\u65f6\u95f4",
//"PT", //"PT",
}, },
{ {
"de-DE", "de-DE",
@ -69,7 +69,7 @@ public class CLDRDisplayNamesTest {
"Nordamerikanische Westk\u00fcsten-Sommerzeit", "Nordamerikanische Westk\u00fcsten-Sommerzeit",
"GMT-07:00", "GMT-07:00",
//"Nordamerikanische Westk\u00fcstenzeit", //"Nordamerikanische Westk\u00fcstenzeit",
//"PT", //"PT",
}, },
}; };
@ -86,7 +86,7 @@ public class CLDRDisplayNamesTest {
String name = tz.getDisplayName(daylight, style, locale); String name = tz.getDisplayName(daylight, style, locale);
if (!data[i].equals(name)) { if (!data[i].equals(name)) {
System.err.printf("error: got '%s' expected '%s' (style=%d, daylight=%s, locale=%s)%n", System.err.printf("error: got '%s' expected '%s' (style=%d, daylight=%s, locale=%s)%n",
name, data[i], style, daylight, locale); name, data[i], style, daylight, locale);
errors++; errors++;
} }
} }
@ -117,6 +117,17 @@ public class CLDRDisplayNamesTest {
Locale.setDefault(originalLocale); Locale.setDefault(originalLocale);
} }
// for 8210490
// Check that TimeZone.getDisplayName should honor passed locale parameter,
// even if default locale is set to some other locale.
Locale.setDefault(Locale.forLanguageTag("ar-PK"));
TimeZone zi = TimeZone.getTimeZone("Etc/GMT-5");
String displayName = zi.getDisplayName(false, TimeZone.SHORT, Locale.US);
Locale.setDefault(originalLocale);
if (!displayName.equals("GMT+05:00")) {
System.err.printf("Wrong display name for timezone Etc/GMT-5 : expected GMT+05:00, Actual " + displayName);
errors++;
}
if (errors > 0) { if (errors > 0) {
throw new RuntimeException("test failed"); throw new RuntimeException("test failed");
} }