diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/text/DateTimePatternGenerator.java b/icu4j/main/core/src/main/java/com/ibm/icu/text/DateTimePatternGenerator.java index e2c5ea92e9ed..a77d72e4e0c2 100644 --- a/icu4j/main/core/src/main/java/com/ibm/icu/text/DateTimePatternGenerator.java +++ b/icu4j/main/core/src/main/java/com/ibm/icu/text/DateTimePatternGenerator.java @@ -2421,10 +2421,12 @@ private String adjustFieldTypes(PatternWithMatcher patternWithMatcher, DateTimeM } int adjFieldLen = reqFieldLen; DateTimeMatcher matcherWithSkeleton = patternWithMatcher.matcherWithSkeleton; - if ( (type == HOUR && (options & MATCH_HOUR_FIELD_LENGTH)==0) || - (type == MINUTE && (options & MATCH_MINUTE_FIELD_LENGTH)==0) || - (type == SECOND && (options & MATCH_SECOND_FIELD_LENGTH)==0) ) { - adjFieldLen = fieldBuilder.length(); + if (type == HOUR || type == MINUTE || type == SECOND) { + if ((type == HOUR && (options & MATCH_HOUR_FIELD_LENGTH)==0) + || (type == MINUTE && (options & MATCH_MINUTE_FIELD_LENGTH)==0) + || (type == SECOND && (options & MATCH_SECOND_FIELD_LENGTH)==0)) { + adjFieldLen = fieldBuilder.length(); + } } else if (matcherWithSkeleton != null && reqFieldChar != 'c' && reqFieldChar != 'e') { // (we skip this section for 'c' and 'e' because unlike the other characters considered in this function, // they have no minimum field length-- 'E' and 'EE' are equivalent to 'EEE', but 'e' and 'ee' are not diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/DateTimeGeneratorTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/DateTimeGeneratorTest.java index 6aa82e550b41..be07203e4c72 100644 --- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/DateTimeGeneratorTest.java +++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/DateTimeGeneratorTest.java @@ -64,7 +64,7 @@ public void TestC() { {"zh-TW", "CCCCm", "BBBBhh:mm"}, {"zh-TW", "CCCCCm", "BBBBBh:mm"}, {"zh-TW", "CCCCCCm", "BBBBBhh:mm"}, - {"de", "Cm", "HH:mm"}, + {"de", "Cm", "H:mm"}, {"de", "CCm", "HH:mm"}, {"de", "CCCm", "HH:mm"}, {"de", "CCCCm", "HH:mm"}, @@ -1344,7 +1344,7 @@ public void TestOptions() { new TestOptionsItem( "en", "Hmm", "HH:mm", DateTimePatternGenerator.MATCH_NO_OPTIONS ), new TestOptionsItem( "en", "HHmm", "HH:mm", DateTimePatternGenerator.MATCH_NO_OPTIONS ), new TestOptionsItem( "en", "hhmm", "h:mm\u202Fa", DateTimePatternGenerator.MATCH_NO_OPTIONS ), - new TestOptionsItem( "en", "Hmm", "HH:mm", DateTimePatternGenerator.MATCH_HOUR_FIELD_LENGTH ), + new TestOptionsItem( "en", "Hmm", "H:mm", DateTimePatternGenerator.MATCH_HOUR_FIELD_LENGTH ), new TestOptionsItem( "en", "HHmm", "HH:mm", DateTimePatternGenerator.MATCH_HOUR_FIELD_LENGTH ), new TestOptionsItem( "en", "hhmm", "hh:mm\u202Fa", DateTimePatternGenerator.MATCH_HOUR_FIELD_LENGTH ), new TestOptionsItem( "da", "Hmm", "HH.mm", DateTimePatternGenerator.MATCH_NO_OPTIONS ),