diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/RelativeDateTimeFormatter.java b/icu4j/main/classes/core/src/com/ibm/icu/text/RelativeDateTimeFormatter.java index 740f7c68df3..0986e4c2e4d 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/text/RelativeDateTimeFormatter.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/text/RelativeDateTimeFormatter.java @@ -281,12 +281,11 @@ public final class RelativeDateTimeFormatter { * @provisional */ public static RelativeDateTimeFormatter getInstance(ULocale locale) { - CalendarData calData = new CalendarData(locale, null); RelativeDateTimeFormatterData data = cache.get(locale); return new RelativeDateTimeFormatter( data.qualitativeUnitMap, data.quantitativeUnitMap, - new MessageFormat(calData.getDateTimePattern()), + new MessageFormat(data.dateTimePattern), PluralRules.forLocale(locale), NumberFormat.getInstance(locale)); } @@ -369,9 +368,6 @@ public final class RelativeDateTimeFormatter { String current) { EnumMap unitStrings = new EnumMap(Direction.class); - unitStrings.put(Direction.LAST, current); - unitStrings.put(Direction.THIS, current); - unitStrings.put(Direction.NEXT, current); unitStrings.put(Direction.PLAIN, current); qualitativeUnits.put(unit, unitStrings); } @@ -428,13 +424,16 @@ public final class RelativeDateTimeFormatter { private static class RelativeDateTimeFormatterData { public RelativeDateTimeFormatterData( EnumMap> qualitativeUnitMap, - EnumMap quantitativeUnitMap) { + EnumMap quantitativeUnitMap, + String dateTimePattern) { this.qualitativeUnitMap = qualitativeUnitMap; this.quantitativeUnitMap = quantitativeUnitMap; + this.dateTimePattern = dateTimePattern; } public final EnumMap> qualitativeUnitMap; public final EnumMap quantitativeUnitMap; + public final String dateTimePattern; // Example: "{1}, {0}" } private static class Cache { @@ -547,8 +546,11 @@ public final class RelativeDateTimeFormatter { r.getWithFallback("fields/sun"), dayOfWeekMap, AbsoluteUnit.SUNDAY, - qualitativeUnitMap); - return new RelativeDateTimeFormatterData(qualitativeUnitMap, quantitativeUnitMap); + qualitativeUnitMap); + CalendarData calData = new CalendarData( + ulocale, r.getStringWithFallback("calendar/default")); + return new RelativeDateTimeFormatterData( + qualitativeUnitMap, quantitativeUnitMap, calData.getDateTimePattern()); } private void addTimeUnit( @@ -615,8 +617,7 @@ public final class RelativeDateTimeFormatter { if (daysOfWeekBundle.getSize() != 7) { throw new IllegalStateException(String.format("Expect 7 days in a week, got %d", daysOfWeekBundle.getSize())); } - // Assuming that days of week are always listed from Sunday. - // TODO(tkeep): Is this always true? + // Sunday always comes first in CLDR data. int idx = 0; dayOfWeekMap.put(AbsoluteUnit.SUNDAY, daysOfWeekBundle.getString(idx++)); dayOfWeekMap.put(AbsoluteUnit.MONDAY, daysOfWeekBundle.getString(idx++)); @@ -628,7 +629,6 @@ public final class RelativeDateTimeFormatter { return dayOfWeekMap; } } - private static final Cache cache = new Cache(); } diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/RelativeDateTimeFormatterTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/RelativeDateTimeFormatterTest.java index aa449bd7ac4..043399b752c 100644 --- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/RelativeDateTimeFormatterTest.java +++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/RelativeDateTimeFormatterTest.java @@ -6,8 +6,6 @@ */ package com.ibm.icu.dev.test.format; - - import com.ibm.icu.dev.test.TestFmwk; import com.ibm.icu.text.NumberFormat; import com.ibm.icu.text.RelativeDateTimeFormatter; @@ -16,10 +14,6 @@ import com.ibm.icu.text.RelativeDateTimeFormatter.Direction; import com.ibm.icu.text.RelativeDateTimeFormatter.RelativeUnit; import com.ibm.icu.util.ULocale; -/** - * @author rocketman - * - */ public class RelativeDateTimeFormatterTest extends TestFmwk { public static void main(String[] args) throws Exception {