src/java.base/share/classes/sun/util/locale/provider/LocaleResources.java
Print this page
@@ -400,25 +400,26 @@
}
}
if (timeStyle >= 0) {
if (dateStyle >= 0) {
String dateTimePattern = null;
+ int dateTimeStyle = Math.max(dateStyle, timeStyle);
if (prefix != null) {
- dateTimePattern = getDateTimePattern(prefix, "DateTimePatterns", 0, calType);
+ dateTimePattern = getDateTimePattern(prefix, "DateTimePatterns", dateTimeStyle, calType);
}
if (dateTimePattern == null) {
- dateTimePattern = getDateTimePattern(null, "DateTimePatterns", 0, calType);
+ dateTimePattern = getDateTimePattern(null, "DateTimePatterns", dateTimeStyle, calType);
}
switch (dateTimePattern) {
case "{1} {0}":
pattern = datePattern + " " + timePattern;
break;
case "{0} {1}":
pattern = timePattern + " " + datePattern;
break;
default:
- pattern = MessageFormat.format(dateTimePattern, timePattern, datePattern);
+ pattern = MessageFormat.format(dateTimePattern.replaceAll("'", "''"), timePattern, datePattern);
break;
}
} else {
pattern = timePattern;
}
@@ -490,11 +491,14 @@
}
if (value == NULLOBJECT) {
assert prefix != null;
return null;
}
- return ((String[])value)[styleIndex];
+
+ // for DateTimePatterns. CLDR has multiple styles, while JRE has one.
+ String[] styles = (String[])value;
+ return (styles.length > 1 ? styles[styleIndex] : styles[0]);
}
private static class ResourceReference extends SoftReference<Object> {
private final String cacheKey;