From: Travis Keep Date: Thu, 9 Apr 2015 18:28:59 +0000 (+0000) Subject: ICU-11580 Fix DateIntervalInfo descrepencies between C and J X-Git-Tag: milestone-59-0-1~1143 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2efcd46ee3622d1b3b7e994369fdd29f524c7a65;p=icu ICU-11580 Fix DateIntervalInfo descrepencies between C and J X-SVN-Rev: 37325 --- diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/DateIntervalInfo.java b/icu4j/main/classes/core/src/com/ibm/icu/text/DateIntervalInfo.java index 9ee07144fce..cfd60718594 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/text/DateIntervalInfo.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/text/DateIntervalInfo.java @@ -460,17 +460,23 @@ public class DateIntervalInfo implements Cloneable, Freezable, String pattern = intervalPatterns.get(ptnIndex).getString(); int calendarField = -1; // initialize with an invalid value. - if ( key.compareTo(CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.YEAR]) == 0 ) { + if ( key.equals(CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.YEAR])) { calendarField = Calendar.YEAR; - } else if ( key.compareTo(CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.MONTH]) == 0 ) { + } else if ( key.equals(CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.MONTH])) { calendarField = Calendar.MONTH; - } else if ( key.compareTo(CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.DATE]) == 0 ) { + } else if ( key.equals(CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.DATE])) { calendarField = Calendar.DATE; - } else if ( key.compareTo(CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.AM_PM]) == 0 ) { + } else if ( key.equals(CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.AM_PM]) ) { calendarField = Calendar.AM_PM; - } else if ( key.compareTo(CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.HOUR]) == 0 ) { - calendarField = Calendar.HOUR; - } else if ( key.compareTo(CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.MINUTE]) == 0 ) { + } else if ( key.equals(CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.HOUR]) ) { + calendarField = Calendar.HOUR; + key = CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.HOUR]; + } else if ( key.equals(CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.HOUR_OF_DAY]) ) { + // HOUR_OF_DAY is 'H' for 24 hour clock; HOUR is 'h' for 12 hour clock. We use HOUR + // here instead of HOUR_OF_DAY because setIntervalPatternInternally understand HOUR. + calendarField = Calendar.HOUR; + key = CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.HOUR]; + } else if ( key.equals(CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.MINUTE]) ) { calendarField = Calendar.MINUTE; } diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateIntervalFormatTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateIntervalFormatTest.java index 3113af7fbb7..8df1b15b5bc 100644 --- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateIntervalFormatTest.java +++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateIntervalFormatTest.java @@ -412,7 +412,7 @@ public class DateIntervalFormatTest extends com.ibm.icu.dev.test.TestFmwk { "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hms", "10:10:10 AM", - + "en", "2007 01 01 22:00:00", "2007 01 01 23:00:00", "yMMMMdHm", "January 1, 2007, 22:00 \u2013 23:00", "zh", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EEEEdMMMMy", "2007\\u5e7410\\u670810\\u65e5\\u661f\\u671f\\u4e09\\u81f32008\\u5e7410\\u670810\\u65e5\\u661f\\u671f\\u4e94", @@ -1252,8 +1252,8 @@ public class DateIntervalFormatTest extends com.ibm.icu.dev.test.TestFmwk { DateInterval dtitv = new DateInterval(date1, date2); TimeZone tzCalif = TimeZone.getFrozenTimeZone("US/Pacific"); TimeZone tzTokyo = TimeZone.getFrozenTimeZone("Asia/Tokyo"); - String fmtCalif = "Mar 2, 10:30 \u2013 Mar 2, 17:30"; // ICU4C result is "Mar 2, 10:30 \u2013 17:30" (does not duplicate day) - String fmtTokyo = "Mar 3, 03:30 \u2013 Mar 3, 10:30"; // ICU4C result is "Mar 3, 03:30 \u2013 10:30" (does not duplicate day) + String fmtCalif = "Mar 2, 10:30 \u2013 17:30"; // ICU4C result is "Mar 2, 10:30 \u2013 17:30" (does not duplicate day) + String fmtTokyo = "Mar 3, 03:30 \u2013 10:30"; // ICU4C result is "Mar 3, 03:30 \u2013 10:30" (does not duplicate day) StringBuffer buf = new StringBuffer(); FieldPosition pos = new FieldPosition(0);