From 2e97386d9db1616134d9c76d19563028ffdcc66e Mon Sep 17 00:00:00 2001 From: Roozbeh Pournader Date: Tue, 14 Nov 2017 19:20:07 -0800 Subject: Drop the second unit from elapsed time if zero Previously, we could get formatted strings like "1h 0min" which is unnecessarily complex for users. Replace such cases with "1 h" if the second unit is zero. Fixes: 65426298 Test: bit FrameworksCoreTests:android.text.format.FormatterTest Change-Id: I1d9828ec97f2cbfb7ce27c266a04d4c02b090d6d --- core/java/android/text/format/Formatter.java | 6 +++--- .../coretests/src/android/text/format/FormatterTest.java | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/core/java/android/text/format/Formatter.java b/core/java/android/text/format/Formatter.java index 2c83fc4d9049..8c90156d159d 100644 --- a/core/java/android/text/format/Formatter.java +++ b/core/java/android/text/format/Formatter.java @@ -355,21 +355,21 @@ public final class Formatter { final Locale locale = localeFromContext(context); final MeasureFormat measureFormat = MeasureFormat.getInstance( locale, MeasureFormat.FormatWidth.SHORT); - if (days >= 2) { + if (days >= 2 || (days > 0 && hours == 0)) { days += (hours+12)/24; return measureFormat.format(new Measure(days, MeasureUnit.DAY)); } else if (days > 0) { return measureFormat.formatMeasures( new Measure(days, MeasureUnit.DAY), new Measure(hours, MeasureUnit.HOUR)); - } else if (hours >= 2) { + } else if (hours >= 2 || (hours > 0 && minutes == 0)) { hours += (minutes+30)/60; return measureFormat.format(new Measure(hours, MeasureUnit.HOUR)); } else if (hours > 0) { return measureFormat.formatMeasures( new Measure(hours, MeasureUnit.HOUR), new Measure(minutes, MeasureUnit.MINUTE)); - } else if (minutes >= 2) { + } else if (minutes >= 2 || (minutes > 0 && seconds == 0)) { minutes += (seconds+30)/60; return measureFormat.format(new Measure(minutes, MeasureUnit.MINUTE)); } else if (minutes > 0) { diff --git a/core/tests/coretests/src/android/text/format/FormatterTest.java b/core/tests/coretests/src/android/text/format/FormatterTest.java index 24e3646e02fc..dee51dcbc7ff 100644 --- a/core/tests/coretests/src/android/text/format/FormatterTest.java +++ b/core/tests/coretests/src/android/text/format/FormatterTest.java @@ -117,13 +117,13 @@ public class FormatterTest { assertEquals("2 days", Formatter.formatShortElapsedTime(mContext, 2 * DAY)); assertEquals("1 day, 23 hr", Formatter.formatShortElapsedTime(mContext, 1 * DAY + 23 * HOUR + 59 * MINUTE)); - assertEquals("1 day, 0 hr", + assertEquals("1 day", Formatter.formatShortElapsedTime(mContext, 1 * DAY + 59 * MINUTE)); - assertEquals("1 day, 0 hr", Formatter.formatShortElapsedTime(mContext, 1 * DAY)); + assertEquals("1 day", Formatter.formatShortElapsedTime(mContext, 1 * DAY)); assertEquals("24 hr", Formatter.formatShortElapsedTime(mContext, 23 * HOUR + 30 * MINUTE)); assertEquals("3 hr", Formatter.formatShortElapsedTime(mContext, 2 * HOUR + 30 * MINUTE)); assertEquals("2 hr", Formatter.formatShortElapsedTime(mContext, 2 * HOUR)); - assertEquals("1 hr, 0 min", Formatter.formatShortElapsedTime(mContext, 1 * HOUR)); + assertEquals("1 hr", Formatter.formatShortElapsedTime(mContext, 1 * HOUR)); assertEquals("60 min", Formatter.formatShortElapsedTime(mContext, 59 * MINUTE + 30 * SECOND)); assertEquals("59 min", @@ -132,7 +132,7 @@ public class FormatterTest { assertEquals("2 min", Formatter.formatShortElapsedTime(mContext, 2 * MINUTE)); assertEquals("1 min, 59 sec", Formatter.formatShortElapsedTime(mContext, 1 * MINUTE + 59 * SECOND + 999)); - assertEquals("1 min, 0 sec", Formatter.formatShortElapsedTime(mContext, 1 * MINUTE)); + assertEquals("1 min", Formatter.formatShortElapsedTime(mContext, 1 * MINUTE)); assertEquals("59 sec", Formatter.formatShortElapsedTime(mContext, 59 * SECOND + 999)); assertEquals("1 sec", Formatter.formatShortElapsedTime(mContext, 1 * SECOND)); assertEquals("0 sec", Formatter.formatShortElapsedTime(mContext, 1)); @@ -154,9 +154,9 @@ public class FormatterTest { mContext, 2 * DAY)); assertEquals("1 day, 23 hr", Formatter.formatShortElapsedTimeRoundingUpToMinutes( mContext, 1 * DAY + 23 * HOUR + 59 * MINUTE)); - assertEquals("1 day, 0 hr", Formatter.formatShortElapsedTimeRoundingUpToMinutes( + assertEquals("1 day", Formatter.formatShortElapsedTimeRoundingUpToMinutes( mContext, 1 * DAY + 59 * MINUTE)); - assertEquals("1 day, 0 hr", Formatter.formatShortElapsedTimeRoundingUpToMinutes( + assertEquals("1 day", Formatter.formatShortElapsedTimeRoundingUpToMinutes( mContext, 1 * DAY)); assertEquals("24 hr", Formatter.formatShortElapsedTimeRoundingUpToMinutes( mContext, 23 * HOUR + 30 * MINUTE)); @@ -164,9 +164,9 @@ public class FormatterTest { mContext, 2 * HOUR + 30 * MINUTE)); assertEquals("2 hr", Formatter.formatShortElapsedTimeRoundingUpToMinutes( mContext, 2 * HOUR)); - assertEquals("1 hr, 0 min", Formatter.formatShortElapsedTimeRoundingUpToMinutes( + assertEquals("1 hr", Formatter.formatShortElapsedTimeRoundingUpToMinutes( mContext, 1 * HOUR)); - assertEquals("1 hr, 0 min", Formatter.formatShortElapsedTimeRoundingUpToMinutes( + assertEquals("1 hr", Formatter.formatShortElapsedTimeRoundingUpToMinutes( mContext, 59 * MINUTE + 30 * SECOND)); assertEquals("59 min", Formatter.formatShortElapsedTimeRoundingUpToMinutes( mContext, 59 * MINUTE)); -- cgit v1.2.3-59-g8ed1b