]> granicus.if.org Git - icu/commitdiff
ICU-11580 Fix DateIntervalInfo descrepencies between C and J
authorTravis Keep <keep94@gmail.com>
Thu, 9 Apr 2015 18:28:59 +0000 (18:28 +0000)
committerTravis Keep <keep94@gmail.com>
Thu, 9 Apr 2015 18:28:59 +0000 (18:28 +0000)
X-SVN-Rev: 37325

icu4j/main/classes/core/src/com/ibm/icu/text/DateIntervalInfo.java
icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateIntervalFormatTest.java

index 9ee07144fcee0097edf97bd2c0a2deeebd048b5a..cfd60718594e5b39a7bc23ee937f6c132cef9fdf 100644 (file)
@@ -460,17 +460,23 @@ public class DateIntervalInfo implements Cloneable, Freezable<DateIntervalInfo>,
                         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;    
                         }
              
index 3113af7fbb7785c8f8fc3bb97c2b048edbf74ba3..8df1b15b5bc25a0d72fb7d35e9d823d1c2078b07 100644 (file)
@@ -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);