summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/text/format/DateTimeFormat.java19
-rw-r--r--core/java/android/text/format/DateUtils.java1
-rw-r--r--core/java/android/text/format/DateUtilsBridge.java70
-rw-r--r--core/java/android/text/format/RelativeDateTimeFormatter.java187
4 files changed, 142 insertions, 135 deletions
diff --git a/core/java/android/text/format/DateTimeFormat.java b/core/java/android/text/format/DateTimeFormat.java
index 20c4f4c6c4ac..064d7172c44f 100644
--- a/core/java/android/text/format/DateTimeFormat.java
+++ b/core/java/android/text/format/DateTimeFormat.java
@@ -22,17 +22,17 @@ import android.icu.text.DisplayContext;
import android.icu.text.SimpleDateFormat;
import android.icu.util.Calendar;
import android.icu.util.ULocale;
-
-import libcore.util.BasicLruCache;
+import android.util.LruCache;
/**
* A formatter that outputs a single date/time.
+ *
+ * @hide
*/
-public class DateTimeFormat {
- private static final libcore.icu.DateTimeFormat.FormatterCache
- CACHED_FORMATTERS = new libcore.icu.DateTimeFormat.FormatterCache();
+class DateTimeFormat {
+ private static final FormatterCache CACHED_FORMATTERS = new FormatterCache();
- static class FormatterCache extends BasicLruCache<String, DateFormat> {
+ static class FormatterCache extends LruCache<String, DateFormat> {
FormatterCache() {
super(8);
}
@@ -42,13 +42,14 @@ public class DateTimeFormat {
}
public static String format(ULocale icuLocale, Calendar time, int flags,
- DisplayContext displayContext) {
+ DisplayContext displayContext) {
String skeleton = DateUtilsBridge.toSkeleton(time, flags);
String key = skeleton + "\t" + icuLocale + "\t" + time.getTimeZone();
- synchronized(CACHED_FORMATTERS) {
+ synchronized (CACHED_FORMATTERS) {
DateFormat formatter = CACHED_FORMATTERS.get(key);
if (formatter == null) {
- DateTimePatternGenerator generator = DateTimePatternGenerator.getInstance(icuLocale);
+ DateTimePatternGenerator generator = DateTimePatternGenerator.getInstance(
+ icuLocale);
formatter = new SimpleDateFormat(generator.getBestPattern(skeleton), icuLocale);
CACHED_FORMATTERS.put(key, formatter);
}
diff --git a/core/java/android/text/format/DateUtils.java b/core/java/android/text/format/DateUtils.java
index f236f19e973f..b0253a0af7a7 100644
--- a/core/java/android/text/format/DateUtils.java
+++ b/core/java/android/text/format/DateUtils.java
@@ -29,7 +29,6 @@ import com.android.internal.R;
import libcore.icu.DateIntervalFormat;
import libcore.icu.LocaleData;
-import libcore.icu.RelativeDateTimeFormatter;
import java.io.IOException;
import java.util.Calendar;
diff --git a/core/java/android/text/format/DateUtilsBridge.java b/core/java/android/text/format/DateUtilsBridge.java
index 8701f5cb38e9..370d999abf3e 100644
--- a/core/java/android/text/format/DateUtilsBridge.java
+++ b/core/java/android/text/format/DateUtilsBridge.java
@@ -16,49 +16,58 @@
package android.text.format;
+import static com.android.internal.annotations.VisibleForTesting.Visibility.PACKAGE;
+
import android.icu.util.Calendar;
import android.icu.util.GregorianCalendar;
import android.icu.util.TimeZone;
import android.icu.util.ULocale;
+import com.android.internal.annotations.VisibleForTesting;
+
/**
- * Common methods and constants for the various ICU formatters used to support
- * {@link android.text.format.DateUtils}.
+ * Common methods and constants for the various ICU formatters used to support {@link
+ * android.text.format.DateUtils}.
+ *
* @hide
*/
-final class DateUtilsBridge {
+@VisibleForTesting(visibility = PACKAGE)
+public final class DateUtilsBridge {
// These are all public API in DateUtils. There are others, but they're either for use with
// other methods (like FORMAT_ABBREV_RELATIVE), don't internationalize (like FORMAT_CAP_AMPM),
// or have never been implemented anyway.
- public static final int FORMAT_SHOW_TIME = 0x00001;
- public static final int FORMAT_SHOW_WEEKDAY = 0x00002;
- public static final int FORMAT_SHOW_YEAR = 0x00004;
- public static final int FORMAT_NO_YEAR = 0x00008;
- public static final int FORMAT_SHOW_DATE = 0x00010;
- public static final int FORMAT_NO_MONTH_DAY = 0x00020;
- public static final int FORMAT_12HOUR = 0x00040;
- public static final int FORMAT_24HOUR = 0x00080;
- public static final int FORMAT_UTC = 0x02000;
- public static final int FORMAT_ABBREV_TIME = 0x04000;
- public static final int FORMAT_ABBREV_WEEKDAY = 0x08000;
- public static final int FORMAT_ABBREV_MONTH = 0x10000;
- public static final int FORMAT_NUMERIC_DATE = 0x20000;
+ public static final int FORMAT_SHOW_TIME = 0x00001;
+ public static final int FORMAT_SHOW_WEEKDAY = 0x00002;
+ public static final int FORMAT_SHOW_YEAR = 0x00004;
+ public static final int FORMAT_NO_YEAR = 0x00008;
+ public static final int FORMAT_SHOW_DATE = 0x00010;
+ public static final int FORMAT_NO_MONTH_DAY = 0x00020;
+ public static final int FORMAT_12HOUR = 0x00040;
+ public static final int FORMAT_24HOUR = 0x00080;
+ public static final int FORMAT_UTC = 0x02000;
+ public static final int FORMAT_ABBREV_TIME = 0x04000;
+ public static final int FORMAT_ABBREV_WEEKDAY = 0x08000;
+ public static final int FORMAT_ABBREV_MONTH = 0x10000;
+ public static final int FORMAT_NUMERIC_DATE = 0x20000;
public static final int FORMAT_ABBREV_RELATIVE = 0x40000;
- public static final int FORMAT_ABBREV_ALL = 0x80000;
+ public static final int FORMAT_ABBREV_ALL = 0x80000;
/**
- * Creates an immutable ICU timezone backed by the specified libcore timezone data. At the time of
- * writing the libcore implementation is faster but restricted to 1902 - 2038.
- * Callers must not modify the {@code tz} after calling this method.
+ * Creates an immutable ICU timezone backed by the specified libcore timezone data. At the time
+ * of writing the libcore implementation is faster but restricted to 1902 - 2038. Callers must
+ * not modify the {@code tz} after calling this method.
*/
- public static android.icu.util.TimeZone icuTimeZone(java.util.TimeZone tz) {
- android.icu.util.TimeZone icuTimeZone = TimeZone.getTimeZone(tz.getID());
+ public static TimeZone icuTimeZone(java.util.TimeZone tz) {
+ TimeZone icuTimeZone = TimeZone.getTimeZone(tz.getID());
icuTimeZone.freeze(); // Optimization - allows the timezone to be copied cheaply.
return icuTimeZone;
}
- public static Calendar createIcuCalendar(android.icu.util.TimeZone icuTimeZone, ULocale icuLocale,
- long timeInMillis) {
+ /**
+ * Create a GregorianCalendar based on the arguments
+ */
+ public static Calendar createIcuCalendar(TimeZone icuTimeZone, ULocale icuLocale,
+ long timeInMillis) {
Calendar calendar = new GregorianCalendar(icuTimeZone, icuLocale);
calendar.setTimeInMillis(timeInMillis);
return calendar;
@@ -123,7 +132,8 @@ final class DateUtilsBridge {
if ((flags & FORMAT_SHOW_YEAR) != 0) {
// The caller explicitly wants us to show the year.
} else if ((flags & FORMAT_NO_YEAR) != 0) {
- // The caller explicitly doesn't want us to show the year, even if we otherwise would.
+ // The caller explicitly doesn't want us to show the year, even if we otherwise
+ // would.
} else if (!fallInSameYear(startCalendar, endCalendar) || !isThisYear(startCalendar)) {
flags |= FORMAT_SHOW_YEAR;
}
@@ -157,8 +167,8 @@ final class DateUtilsBridge {
* skeletons provided by {@link #toSkeleton}.
*/
public static boolean isDisplayMidnightUsingSkeleton(Calendar c) {
- // All the skeletons returned by toSkeleton have minute precision (they may abbreviate 4:00 PM
- // to 4 PM but will still show the following minute as 4:01 PM).
+ // All the skeletons returned by toSkeleton have minute precision (they may abbreviate
+ // 4:00 PM to 4 PM but will still show the following minute as 4:01 PM).
return c.get(Calendar.HOUR_OF_DAY) == 0 && c.get(Calendar.MINUTE) == 0;
}
@@ -167,9 +177,9 @@ final class DateUtilsBridge {
}
private static boolean fallOnDifferentDates(Calendar c1, Calendar c2) {
- return c1.get(Calendar.YEAR) != c2.get(Calendar.YEAR) ||
- c1.get(Calendar.MONTH) != c2.get(Calendar.MONTH) ||
- c1.get(Calendar.DAY_OF_MONTH) != c2.get(Calendar.DAY_OF_MONTH);
+ return c1.get(Calendar.YEAR) != c2.get(Calendar.YEAR)
+ || c1.get(Calendar.MONTH) != c2.get(Calendar.MONTH)
+ || c1.get(Calendar.DAY_OF_MONTH) != c2.get(Calendar.DAY_OF_MONTH);
}
private static boolean fallInSameMonth(Calendar c1, Calendar c2) {
diff --git a/core/java/android/text/format/RelativeDateTimeFormatter.java b/core/java/android/text/format/RelativeDateTimeFormatter.java
index 9c5243112865..c5bca172873a 100644
--- a/core/java/android/text/format/RelativeDateTimeFormatter.java
+++ b/core/java/android/text/format/RelativeDateTimeFormatter.java
@@ -16,13 +16,6 @@
package android.text.format;
-import java.util.Locale;
-import libcore.util.BasicLruCache;
-
-import android.icu.text.DisplayContext;
-import android.icu.util.Calendar;
-import android.icu.util.ULocale;
-
import static android.text.format.DateUtilsBridge.FORMAT_ABBREV_ALL;
import static android.text.format.DateUtilsBridge.FORMAT_ABBREV_MONTH;
import static android.text.format.DateUtilsBridge.FORMAT_ABBREV_RELATIVE;
@@ -32,12 +25,24 @@ import static android.text.format.DateUtilsBridge.FORMAT_SHOW_DATE;
import static android.text.format.DateUtilsBridge.FORMAT_SHOW_TIME;
import static android.text.format.DateUtilsBridge.FORMAT_SHOW_YEAR;
+import static com.android.internal.annotations.VisibleForTesting.Visibility.PACKAGE;
+
+import android.icu.text.DisplayContext;
+import android.icu.util.Calendar;
+import android.icu.util.ULocale;
+import android.util.LruCache;
+
+import com.android.internal.annotations.VisibleForTesting;
+
+import java.util.Locale;
+
/**
* Exposes icu4j's RelativeDateTimeFormatter.
*
* @hide
*/
-final class RelativeDateTimeFormatter {
+@VisibleForTesting(visibility = PACKAGE)
+public final class RelativeDateTimeFormatter {
public static final long SECOND_IN_MILLIS = 1000;
public static final long MINUTE_IN_MILLIS = SECOND_IN_MILLIS * 60;
@@ -54,7 +59,7 @@ final class RelativeDateTimeFormatter {
private static final FormatterCache CACHED_FORMATTERS = new FormatterCache();
static class FormatterCache
- extends BasicLruCache<String, android.icu.text.RelativeDateTimeFormatter> {
+ extends LruCache<String, android.icu.text.RelativeDateTimeFormatter> {
FormatterCache() {
super(8);
}
@@ -64,42 +69,40 @@ final class RelativeDateTimeFormatter {
}
/**
- * This is the internal API that implements the functionality of
- * DateUtils.getRelativeTimeSpanString(long, long, long, int), which is to
- * return a string describing 'time' as a time relative to 'now' such as
- * '5 minutes ago', or 'In 2 days'. More examples can be found in DateUtils'
- * doc.
- *
- * In the implementation below, it selects the appropriate time unit based on
- * the elapsed time between time' and 'now', e.g. minutes, days and etc.
- * Callers may also specify the desired minimum resolution to show in the
- * result. For example, '45 minutes ago' will become '0 hours ago' when
- * minResolution is HOUR_IN_MILLIS. Once getting the quantity and unit to
- * display, it calls icu4j's RelativeDateTimeFormatter to format the actual
- * string according to the given locale.
- *
- * Note that when minResolution is set to DAY_IN_MILLIS, it returns the
- * result depending on the actual date difference. For example, it will
- * return 'Yesterday' even if 'time' was less than 24 hours ago but falling
- * onto a different calendar day.
- *
- * It takes two additional parameters of Locale and TimeZone than the
- * DateUtils' API. Caller must specify the locale and timezone.
- * FORMAT_ABBREV_RELATIVE or FORMAT_ABBREV_ALL can be set in 'flags' to get
- * the abbreviated forms when available. When 'time' equals to 'now', it
- * always // returns a string like '0 seconds/minutes/... ago' according to
- * minResolution.
+ * This is the internal API that implements the functionality of DateUtils
+ * .getRelativeTimeSpanString(long,
+ * long, long, int), which is to return a string describing 'time' as a time relative to 'now'
+ * such as '5 minutes ago', or 'In 2 days'. More examples can be found in DateUtils' doc.
+ * <p>
+ * In the implementation below, it selects the appropriate time unit based on the elapsed time
+ * between time' and 'now', e.g. minutes, days and etc. Callers may also specify the desired
+ * minimum resolution to show in the result. For example, '45 minutes ago' will become '0 hours
+ * ago' when minResolution is HOUR_IN_MILLIS. Once getting the quantity and unit to display, it
+ * calls icu4j's RelativeDateTimeFormatter to format the actual string according to the given
+ * locale.
+ * <p>
+ * Note that when minResolution is set to DAY_IN_MILLIS, it returns the result depending on the
+ * actual date difference. For example, it will return 'Yesterday' even if 'time' was less than
+ * 24 hours ago but falling onto a different calendar day.
+ * <p>
+ * It takes two additional parameters of Locale and TimeZone than the DateUtils' API. Caller
+ * must specify the locale and timezone. FORMAT_ABBREV_RELATIVE or FORMAT_ABBREV_ALL can be set
+ * in 'flags' to get the abbreviated forms when available. When 'time' equals to 'now', it
+ * always // returns a string like '0 seconds/minutes/... ago' according to minResolution.
*/
public static String getRelativeTimeSpanString(Locale locale, java.util.TimeZone tz, long time,
- long now, long minResolution, int flags) {
- // Android has been inconsistent about capitalization in the past. e.g. bug http://b/20247811.
+ long now, long minResolution, int flags) {
+ // Android has been inconsistent about capitalization in the past. e.g. bug
+ // http://b/20247811.
// Now we capitalize everything consistently.
- final DisplayContext displayContext = DisplayContext.CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE;
- return getRelativeTimeSpanString(locale, tz, time, now, minResolution, flags, displayContext);
+ final DisplayContext displayContext =
+ DisplayContext.CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE;
+ return getRelativeTimeSpanString(locale, tz, time, now, minResolution, flags,
+ displayContext);
}
public static String getRelativeTimeSpanString(Locale locale, java.util.TimeZone tz, long time,
- long now, long minResolution, int flags, DisplayContext displayContext) {
+ long now, long minResolution, int flags, DisplayContext displayContext) {
if (locale == null) {
throw new NullPointerException("locale == null");
}
@@ -109,12 +112,13 @@ final class RelativeDateTimeFormatter {
ULocale icuLocale = ULocale.forLocale(locale);
android.icu.util.TimeZone icuTimeZone = DateUtilsBridge.icuTimeZone(tz);
return getRelativeTimeSpanString(icuLocale, icuTimeZone, time, now, minResolution, flags,
- displayContext);
+ displayContext);
}
private static String getRelativeTimeSpanString(ULocale icuLocale,
- android.icu.util.TimeZone icuTimeZone, long time, long now, long minResolution, int flags,
- DisplayContext displayContext) {
+ android.icu.util.TimeZone icuTimeZone, long time, long now, long minResolution,
+ int flags,
+ DisplayContext displayContext) {
long duration = Math.abs(now - time);
boolean past = (now >= time);
@@ -142,16 +146,16 @@ final class RelativeDateTimeFormatter {
android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit aunit = null;
if (duration < MINUTE_IN_MILLIS && minResolution < MINUTE_IN_MILLIS) {
- count = (int)(duration / SECOND_IN_MILLIS);
+ count = (int) (duration / SECOND_IN_MILLIS);
unit = android.icu.text.RelativeDateTimeFormatter.RelativeUnit.SECONDS;
} else if (duration < HOUR_IN_MILLIS && minResolution < HOUR_IN_MILLIS) {
- count = (int)(duration / MINUTE_IN_MILLIS);
+ count = (int) (duration / MINUTE_IN_MILLIS);
unit = android.icu.text.RelativeDateTimeFormatter.RelativeUnit.MINUTES;
} else if (duration < DAY_IN_MILLIS && minResolution < DAY_IN_MILLIS) {
// Even if 'time' actually happened yesterday, we don't format it as
// "Yesterday" in this case. Unless the duration is longer than a day,
// or minResolution is specified as DAY_IN_MILLIS by user.
- count = (int)(duration / HOUR_IN_MILLIS);
+ count = (int) (duration / HOUR_IN_MILLIS);
unit = android.icu.text.RelativeDateTimeFormatter.RelativeUnit.HOURS;
} else if (duration < WEEK_IN_MILLIS && minResolution < WEEK_IN_MILLIS) {
count = Math.abs(dayDistance(icuTimeZone, time, now));
@@ -167,15 +171,13 @@ final class RelativeDateTimeFormatter {
String str;
if (past) {
synchronized (CACHED_FORMATTERS) {
- str = getFormatter(icuLocale, style, displayContext)
- .format(
+ str = getFormatter(icuLocale, style, displayContext).format(
android.icu.text.RelativeDateTimeFormatter.Direction.LAST_2,
android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit.DAY);
}
} else {
synchronized (CACHED_FORMATTERS) {
- str = getFormatter(icuLocale, style, displayContext)
- .format(
+ str = getFormatter(icuLocale, style, displayContext).format(
android.icu.text.RelativeDateTimeFormatter.Direction.NEXT_2,
android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit.DAY);
}
@@ -195,7 +197,7 @@ final class RelativeDateTimeFormatter {
relative = false;
}
} else if (minResolution == WEEK_IN_MILLIS) {
- count = (int)(duration / WEEK_IN_MILLIS);
+ count = (int) (duration / WEEK_IN_MILLIS);
unit = android.icu.text.RelativeDateTimeFormatter.RelativeUnit.WEEKS;
} else {
Calendar timeCalendar = DateUtilsBridge.createIcuCalendar(icuTimeZone, icuLocale, time);
@@ -208,7 +210,8 @@ final class RelativeDateTimeFormatter {
// formatDateRange() would determine that based on the current system
// time and may give wrong results.
if ((flags & (FORMAT_NO_YEAR | FORMAT_SHOW_YEAR)) == 0) {
- Calendar nowCalendar = DateUtilsBridge.createIcuCalendar(icuTimeZone, icuLocale, now);
+ Calendar nowCalendar = DateUtilsBridge.createIcuCalendar(icuTimeZone, icuLocale,
+ now);
if (timeCalendar.get(Calendar.YEAR) != nowCalendar.get(Calendar.YEAR)) {
flags |= FORMAT_SHOW_YEAR;
@@ -221,7 +224,7 @@ final class RelativeDateTimeFormatter {
synchronized (CACHED_FORMATTERS) {
android.icu.text.RelativeDateTimeFormatter formatter =
- getFormatter(icuLocale, style, displayContext);
+ getFormatter(icuLocale, style, displayContext);
if (relative) {
return formatter.format(count, direction, unit);
} else {
@@ -231,36 +234,31 @@ final class RelativeDateTimeFormatter {
}
/**
- * This is the internal API that implements
- * DateUtils.getRelativeDateTimeString(long, long, long, long, int), which is
- * to return a string describing 'time' as a time relative to 'now', formatted
- * like '[relative time/date], [time]'. More examples can be found in
- * DateUtils' doc.
- *
- * The function is similar to getRelativeTimeSpanString, but it always
- * appends the absolute time to the relative time string to return
- * '[relative time/date clause], [absolute time clause]'. It also takes an
- * extra parameter transitionResolution to determine the format of the date
- * clause. When the elapsed time is less than the transition resolution, it
- * displays the relative time string. Otherwise, it gives the absolute
- * numeric date string as the date clause. With the date and time clauses, it
- * relies on icu4j's RelativeDateTimeFormatter::combineDateAndTime() to
- * concatenate the two.
- *
- * It takes two additional parameters of Locale and TimeZone than the
- * DateUtils' API. Caller must specify the locale and timezone.
- * FORMAT_ABBREV_RELATIVE or FORMAT_ABBREV_ALL can be set in 'flags' to get
- * the abbreviated forms when they are available.
- *
- * Bug 5252772: Since the absolute time will always be part of the result,
- * minResolution will be set to at least DAY_IN_MILLIS to correctly indicate
- * the date difference. For example, when it's 1:30 AM, it will return
- * 'Yesterday, 11:30 PM' for getRelativeDateTimeString(null, null,
- * now - 2 hours, now, HOUR_IN_MILLIS, DAY_IN_MILLIS, 0), instead of '2
- * hours ago, 11:30 PM' even with minResolution being HOUR_IN_MILLIS.
+ * This is the internal API that implements DateUtils.getRelativeDateTimeString(long, long,
+ * long, long, int), which is to return a string describing 'time' as a time relative to 'now',
+ * formatted like '[relative time/date], [time]'. More examples can be found in DateUtils' doc.
+ * <p>
+ * The function is similar to getRelativeTimeSpanString, but it always appends the absolute time
+ * to the relative time string to return '[relative time/date clause], [absolute time clause]'.
+ * It also takes an extra parameter transitionResolution to determine the format of the date
+ * clause. When the elapsed time is less than the transition resolution, it displays the
+ * relative time string. Otherwise, it gives the absolute numeric date string as the date
+ * clause. With the date and time clauses, it relies on icu4j's
+ * RelativeDateTimeFormatter::combineDateAndTime()
+ * to concatenate the two.
+ * <p>
+ * It takes two additional parameters of Locale and TimeZone than the DateUtils' API. Caller
+ * must specify the locale and timezone. FORMAT_ABBREV_RELATIVE or FORMAT_ABBREV_ALL can be set
+ * in 'flags' to get the abbreviated forms when they are available.
+ * <p>
+ * Bug 5252772: Since the absolute time will always be part of the result, minResolution will be
+ * set to at least DAY_IN_MILLIS to correctly indicate the date difference. For example, when
+ * it's 1:30 AM, it will return 'Yesterday, 11:30 PM' for getRelativeDateTimeString(null, null,
+ * now - 2 hours, now, HOUR_IN_MILLIS, DAY_IN_MILLIS, 0), instead of '2 hours ago, 11:30 PM'
+ * even with minResolution being HOUR_IN_MILLIS.
*/
public static String getRelativeDateTimeString(Locale locale, java.util.TimeZone tz, long time,
- long now, long minResolution, long transitionResolution, int flags) {
+ long now, long minResolution, long transitionResolution, int flags) {
if (locale == null) {
throw new NullPointerException("locale == null");
@@ -298,7 +296,7 @@ final class RelativeDateTimeFormatter {
minResolution = DAY_IN_MILLIS;
}
dateClause = getRelativeTimeSpanString(icuLocale, icuTimeZone, time, now, minResolution,
- flags, DisplayContext.CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE);
+ flags, DisplayContext.CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE);
} else {
// We always use fixed flags to format the date clause. User-supplied
// flags are ignored.
@@ -311,39 +309,38 @@ final class RelativeDateTimeFormatter {
}
dateClause = DateTimeFormat.format(icuLocale, timeCalendar, flags,
- DisplayContext.CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE);
+ DisplayContext.CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE);
}
String timeClause = DateTimeFormat.format(icuLocale, timeCalendar, FORMAT_SHOW_TIME,
- DisplayContext.CAPITALIZATION_NONE);
+ DisplayContext.CAPITALIZATION_NONE);
- // icu4j also has other options available to control the capitalization. We are currently using
+ // icu4j also has other options available to control the capitalization. We are currently
+ // using
// the _NONE option only.
DisplayContext capitalizationContext = DisplayContext.CAPITALIZATION_NONE;
// Combine the two clauses, such as '5 days ago, 10:50 AM'.
synchronized (CACHED_FORMATTERS) {
return getFormatter(icuLocale, style, capitalizationContext)
- .combineDateAndTime(dateClause, timeClause);
+ .combineDateAndTime(dateClause, timeClause);
}
}
/**
- * getFormatter() caches the RelativeDateTimeFormatter instances based on
- * the combination of localeName, sytle and capitalizationContext. It
- * should always be used along with the action of the formatter in a
- * synchronized block, because otherwise the formatter returned by
- * getFormatter() may have been evicted by the time of the call to
- * formatter->action().
+ * getFormatter() caches the RelativeDateTimeFormatter instances based on the combination of
+ * localeName, sytle and capitalizationContext. It should always be used along with the action
+ * of the formatter in a synchronized block, because otherwise the formatter returned by
+ * getFormatter() may have been evicted by the time of the call to formatter->action().
*/
private static android.icu.text.RelativeDateTimeFormatter getFormatter(
- ULocale locale, android.icu.text.RelativeDateTimeFormatter.Style style,
- DisplayContext displayContext) {
+ ULocale locale, android.icu.text.RelativeDateTimeFormatter.Style style,
+ DisplayContext displayContext) {
String key = locale + "\t" + style + "\t" + displayContext;
android.icu.text.RelativeDateTimeFormatter formatter = CACHED_FORMATTERS.get(key);
if (formatter == null) {
formatter = android.icu.text.RelativeDateTimeFormatter.getInstance(
- locale, null, style, displayContext);
+ locale, null, style, displayContext);
CACHED_FORMATTERS.put(key, formatter);
}
return formatter;
@@ -351,7 +348,7 @@ final class RelativeDateTimeFormatter {
// Return the date difference for the two times in a given timezone.
private static int dayDistance(android.icu.util.TimeZone icuTimeZone, long startTime,
- long endTime) {
+ long endTime) {
return julianDay(icuTimeZone, endTime) - julianDay(icuTimeZone, startTime);
}