RelativeDateFormatter: Simplify rounding of years and months

Instead of adjusting the years and months values after first
incorrectly calculating them, fix the calculation.

Based on the implementation proposed in [1]

[1] https://git.eclipse.org/r/#/c/109895/

Also-by: Michael Keppler <Michael.Keppler@gmx.de>
Change-Id: I9a48183c9a16fda2ea0d2521a7cd0b1a5e5f2f45
This commit is contained in:
David Pursehouse 2017-10-13 21:31:28 +09:00
parent 1b596afc4d
commit 24796d957a
1 changed files with 2 additions and 9 deletions

View File

@ -114,20 +114,13 @@ public class RelativeDateFormatter {
// up to 5 years use "year, months" rounded to months
if (ageMillis < 5 * YEAR_IN_MILLIS) {
long years = ageMillis / YEAR_IN_MILLIS;
long years = round(ageMillis, MONTH_IN_MILLIS) / 12;
String yearLabel = (years > 1) ? c().years() : c().year();
long months = round(ageMillis % YEAR_IN_MILLIS, MONTH_IN_MILLIS);
long months = round(ageMillis - years * YEAR_IN_MILLIS, MONTH_IN_MILLIS);
String monthLabel = (months > 1) ? c().months() : (months == 1 ? c().month() : "");
if (months == 0) {
return m().years0MonthsAgo(years, yearLabel);
}
if (months == 12) {
years++;
if (years > 1) {
yearLabel = c().years();
}
return m().years0MonthsAgo(years, yearLabel);
}
return m().yearsMonthsAgo(years, yearLabel, months, monthLabel);
}