mirror of
https://github.com/unicode-org/icu.git
synced 2025-04-08 06:53:45 +00:00
ICU-21342 Made sure adjustFieldWidth() got called on the duplicated hour pattern used for UCAL_AM_PM in 24-hour patterns.
This commit is contained in:
parent
9a82de789f
commit
d1581238f4
4 changed files with 25 additions and 1 deletions
|
@ -1422,7 +1422,11 @@ DateIntervalFormat::setIntervalPattern(UCalendarDateFields field,
|
|||
if ( field == UCAL_AM_PM ) {
|
||||
fInfo->getIntervalPattern(*bestSkeleton, UCAL_HOUR, pattern,status);
|
||||
if ( !pattern.isEmpty() ) {
|
||||
setIntervalPattern(field, pattern);
|
||||
UBool suppressDayPeriodField = fSkeleton.indexOf(CAP_J) != -1;
|
||||
UnicodeString adjustIntervalPattern;
|
||||
adjustFieldWidth(*skeleton, *bestSkeleton, pattern, differenceInfo,
|
||||
suppressDayPeriodField, adjustIntervalPattern);
|
||||
setIntervalPattern(field, adjustIntervalPattern);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -1160,6 +1160,12 @@ void DateIntervalFormatTest::testHourMetacharacters() {
|
|||
"hi_IN", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "hB", "\\u0930\\u093E\\u0924 12\\u20131",
|
||||
"hi_IN", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "CC", "\\u0938\\u0941\\u092C\\u0939 10 \\u2013 \\u0926\\u094B\\u092A\\u0939\\u0930 1",
|
||||
"hi_IN", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "CC", "\\u0930\\u093E\\u0924 12\\u20131",
|
||||
|
||||
// regression test for ICU-21342
|
||||
"en_GB", "CE 2010 09 27 00:00:00", "CE 2010 09 27 10:00:00", "kk", "24\\u201310",
|
||||
"en_GB", "CE 2010 09 27 00:00:00", "CE 2010 09 27 11:00:00", "kk", "24\\u201311",
|
||||
"en_GB", "CE 2010 09 27 00:00:00", "CE 2010 09 27 12:00:00", "kk", "24\\u201312",
|
||||
"en_GB", "CE 2010 09 27 00:00:00", "CE 2010 09 27 13:00:00", "kk", "24\\u201313",
|
||||
};
|
||||
expect(DATA, UPRV_LENGTHOF(DATA));
|
||||
}
|
||||
|
|
|
@ -1982,6 +1982,14 @@ public class DateIntervalFormat extends UFormat {
|
|||
pattern = fInfo.getIntervalPattern(bestSkeleton,
|
||||
Calendar.HOUR);
|
||||
if ( pattern != null ) {
|
||||
boolean suppressDayPeriodField = fSkeleton.indexOf('J') != -1;
|
||||
String part1 = adjustFieldWidth(skeleton, bestSkeleton,
|
||||
pattern.getFirstPart(), differenceInfo, suppressDayPeriodField);
|
||||
String part2 = adjustFieldWidth(skeleton, bestSkeleton,
|
||||
pattern.getSecondPart(), differenceInfo, suppressDayPeriodField);
|
||||
pattern = new PatternInfo(part1, part2,
|
||||
pattern.firstDateInPtnIsLaterDate());
|
||||
|
||||
// share
|
||||
intervalPatterns.put(DateIntervalInfo.
|
||||
CALENDAR_FIELD_TO_PATTERN_LETTER[field],
|
||||
|
|
|
@ -805,6 +805,12 @@ public class DateIntervalFormatTest extends TestFmwk {
|
|||
"hi_IN", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "hB", "\\u0930\\u093E\\u0924 12\\u20131",
|
||||
"hi_IN", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "CC", "\\u0938\\u0941\\u092C\\u0939 10 \\u2013 \\u0926\\u094B\\u092A\\u0939\\u0930 1",
|
||||
"hi_IN", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "CC", "\\u0930\\u093E\\u0924 12\\u20131",
|
||||
|
||||
// regression test for ICU-21342
|
||||
"en_GB", "CE 2010 09 27 00:00:00", "CE 2010 09 27 10:00:00", "kk", "24\\u201310",
|
||||
"en_GB", "CE 2010 09 27 00:00:00", "CE 2010 09 27 11:00:00", "kk", "24\\u201311",
|
||||
"en_GB", "CE 2010 09 27 00:00:00", "CE 2010 09 27 12:00:00", "kk", "24\\u201312",
|
||||
"en_GB", "CE 2010 09 27 00:00:00", "CE 2010 09 27 13:00:00", "kk", "24\\u201313",
|
||||
};
|
||||
expect(DATA, DATA.length);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue