]> granicus.if.org Git - icu/commitdiff
ICU-13478 Fix J SimpleDateFormat handling of pattern fields b,bb
authorPeter Edberg <pedberg@unicode.org>
Fri, 1 Dec 2017 00:21:53 +0000 (00:21 +0000)
committerPeter Edberg <pedberg@unicode.org>
Fri, 1 Dec 2017 00:21:53 +0000 (00:21 +0000)
X-SVN-Rev: 40680

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

index ab7511ee160729af4c87087e5b68a83e726fe4c4..8e52d77580ecfe364080df659b09fc825c83cced 100644 (file)
@@ -1913,7 +1913,7 @@ public class SimpleDateFormat extends DateFormat {
                 // 12 am is 12 midnight, and 12 pm is 12 noon.
                 value = cal.get(Calendar.AM_PM);
 
-                if (count == 3) {
+                if (count <= 3) {
                     toAppend = formatData.abbreviatedDayPeriods[value];
                 } else if (count == 4 || count > 5) {
                     toAppend = formatData.wideDayPeriods[value];
index 69d245323c4c571ac7146e96ca0e97a900d9d40a..988698053068431ed552d2f91457cc24a6cd9b8f 100644 (file)
@@ -4939,19 +4939,19 @@ public class DateFormatTest extends TestFmwk {
         long k180000 = 1447437600000L;
 
         // Short.
-        SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss bbb");
+        SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss bbb", Locale.ENGLISH);
         sdf.setTimeZone(TimeZone.GMT_ZONE);
 
         // Note: "midnight" can be ambiguous as to whether it refers to beginning of day or end of day.
         // For ICU 57 output of "midnight" is temporarily suppressed.
 
-//        assertEquals("hh:mm:ss bbbb | 00:00:00", "12:00:00 midnight", sdf.format(k000000));
-        assertEquals("hh:mm:ss bbbb | 00:00:00", "12:00:00 AM", sdf.format(k000000));
-        assertEquals("hh:mm:ss bbbb | 00:00:30", "12:00:30 AM", sdf.format(k000030));
-        assertEquals("hh:mm:ss bbbb | 00:30:00", "12:30:00 AM", sdf.format(k003000));
-        assertEquals("hh:mm:ss bbbb | 06:00:00", "06:00:00 AM", sdf.format(k060000));
-        assertEquals("hh:mm:ss bbbb | 12:00:00", "12:00:00 noon", sdf.format(k120000));
-        assertEquals("hh:mm:ss bbbb | 18:00:00", "06:00:00 PM", sdf.format(k180000));
+//        assertEquals("hh:mm:ss bbb | 00:00:00", "12:00:00 midnight", sdf.format(k000000));
+        assertEquals("hh:mm:ss bbb | 00:00:00", "12:00:00 AM", sdf.format(k000000));
+        assertEquals("hh:mm:ss bbb | 00:00:30", "12:00:30 AM", sdf.format(k000030));
+        assertEquals("hh:mm:ss bbb | 00:30:00", "12:30:00 AM", sdf.format(k003000));
+        assertEquals("hh:mm:ss bbb | 06:00:00", "06:00:00 AM", sdf.format(k060000));
+        assertEquals("hh:mm:ss bbb | 12:00:00", "12:00:00 noon", sdf.format(k120000));
+        assertEquals("hh:mm:ss bbb | 18:00:00", "06:00:00 PM", sdf.format(k180000));
 
         sdf.applyPattern("hh:mm bbb");
 
@@ -4960,6 +4960,7 @@ public class DateFormatTest extends TestFmwk {
 //        assertEquals("hh:mm bbb | 00:00:30", "12:00 midnight", sdf.format(k000030));
         assertEquals("hh:mm bbb | 00:00:30", "12:00 AM", sdf.format(k000030));
         assertEquals("hh:mm bbb | 00:30:00", "12:30 AM", sdf.format(k003000));
+        assertEquals("hh:mm bbb | 12:00:00", "12:00 noon", sdf.format(k120000));
 
         sdf.applyPattern("hh bbb");
 
@@ -4969,6 +4970,26 @@ public class DateFormatTest extends TestFmwk {
         assertEquals("hh bbb | 00:00:30", "12 AM", sdf.format(k000030));
 //        assertEquals("hh bbb | 00:30:00", "12 midnight", sdf.format(k003000));
         assertEquals("hh bbb | 00:30:00", "12 AM", sdf.format(k003000));
+        assertEquals("hh bbb | 12:00:00", "12 noon", sdf.format(k120000));
+
+        sdf.applyPattern("hh:mm b");
+
+//        assertEquals("hh:mm b | 00:00:00", "12:00 midnight", sdf.format(k000000));
+        assertEquals("hh:mm b | 00:00:00", "12:00 AM", sdf.format(k000000));
+//        assertEquals("hh:mm b | 00:00:30", "12:00 midnight", sdf.format(k000030));
+        assertEquals("hh:mm b | 00:00:30", "12:00 AM", sdf.format(k000030));
+        assertEquals("hh:mm b | 00:30:00", "12:30 AM", sdf.format(k003000));
+        assertEquals("hh:mm b | 12:00:00", "12:00 noon", sdf.format(k120000));
+
+        sdf.applyPattern("hh b");
+
+//        assertEquals("hh b | 00:00:00", "12 midnight", sdf.format(k000000));
+        assertEquals("hh b | 00:00:00", "12 AM", sdf.format(k000000));
+//        assertEquals("hh b | 00:00:30", "12 midnight", sdf.format(k000030));
+        assertEquals("hh b | 00:00:30", "12 AM", sdf.format(k000030));
+//        assertEquals("hh b | 00:30:00", "12 midnight", sdf.format(k003000));
+        assertEquals("hh b | 00:30:00", "12 AM", sdf.format(k003000));
+        assertEquals("hh b | 12:00:00", "12 noon", sdf.format(k120000));
 
         // Wide.
         sdf.applyPattern("hh:mm:ss bbbb");