From c61c9609a3dccc53ba2d39a6fe5119e06e785b11 Mon Sep 17 00:00:00 2001 From: Peter Edberg Date: Fri, 1 Dec 2017 00:21:53 +0000 Subject: [PATCH] ICU-13478 Fix J SimpleDateFormat handling of pattern fields b,bb X-SVN-Rev: 40680 --- .../com/ibm/icu/text/SimpleDateFormat.java | 2 +- .../icu/dev/test/format/DateFormatTest.java | 37 +++++++++++++++---- 2 files changed, 30 insertions(+), 9 deletions(-) diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/SimpleDateFormat.java b/icu4j/main/classes/core/src/com/ibm/icu/text/SimpleDateFormat.java index ab7511ee160..8e52d77580e 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/text/SimpleDateFormat.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/text/SimpleDateFormat.java @@ -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]; diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateFormatTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateFormatTest.java index 69d245323c4..98869805306 100644 --- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateFormatTest.java +++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateFormatTest.java @@ -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"); -- 2.40.0