Don't add spaces when formatting 'concise' durations
This commit is contained in:
parent
2f7fce2109
commit
054f0c2c19
@ -41,7 +41,7 @@ public enum DurationFormatter {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String format(Calendar from, Calendar to) {
|
public String format(Calendar from, Calendar to) {
|
||||||
return dateDiff(from, to, 4, this.names);
|
return dateDiff(from, to, 4, this.names, true);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -50,7 +50,7 @@ public enum DurationFormatter {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String format(Calendar from, Calendar to) {
|
public String format(Calendar from, Calendar to) {
|
||||||
return dateDiff(from, to, 2, this.names);
|
return dateDiff(from, to, 2, this.names, true);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -59,7 +59,7 @@ public enum DurationFormatter {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String format(Calendar from, Calendar to) {
|
public String format(Calendar from, Calendar to) {
|
||||||
return dateDiff(from, to, 4, this.names);
|
return dateDiff(from, to, 4, this.names, false);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -86,14 +86,12 @@ public enum DurationFormatter {
|
|||||||
* @param names the names to use to format each of the corresponding {@link #CALENDAR_TYPES}
|
* @param names the names to use to format each of the corresponding {@link #CALENDAR_TYPES}
|
||||||
* @return a formatted string
|
* @return a formatted string
|
||||||
*/
|
*/
|
||||||
private static String dateDiff(Calendar from, Calendar to, int maxAccuracy, String[] names) {
|
private static String dateDiff(Calendar from, Calendar to, int maxAccuracy, String[] names, boolean concise) {
|
||||||
boolean future = false;
|
|
||||||
if (to.equals(from)) {
|
if (to.equals(from)) {
|
||||||
return "now";
|
return "now";
|
||||||
}
|
}
|
||||||
if (to.after(from)) {
|
|
||||||
future = true;
|
boolean future = to.after(from);
|
||||||
}
|
|
||||||
|
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
int accuracy = 0;
|
int accuracy = 0;
|
||||||
@ -104,8 +102,17 @@ public enum DurationFormatter {
|
|||||||
|
|
||||||
int diff = dateDiff(CALENDAR_TYPES[i], from, to, future);
|
int diff = dateDiff(CALENDAR_TYPES[i], from, to, future);
|
||||||
if (diff > 0) {
|
if (diff > 0) {
|
||||||
|
int plural = diff > 1 ? 1 : 0;
|
||||||
|
String unit = names[i * 2 + plural];
|
||||||
|
|
||||||
|
sb.append(" ");
|
||||||
|
sb.append(diff);
|
||||||
|
if (!concise) {
|
||||||
|
sb.append(" ");
|
||||||
|
}
|
||||||
|
sb.append(unit);
|
||||||
|
|
||||||
accuracy++;
|
accuracy++;
|
||||||
sb.append(" ").append(diff).append(" ").append(names[i * 2 + (diff > 1 ? 1 : 0)]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -117,12 +124,10 @@ public enum DurationFormatter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static int dateDiff(int type, Calendar fromDate, Calendar toDate, boolean future) {
|
private static int dateDiff(int type, Calendar fromDate, Calendar toDate, boolean future) {
|
||||||
int year = Calendar.YEAR;
|
int fromYear = fromDate.get(Calendar.YEAR);
|
||||||
|
int toYear = toDate.get(Calendar.YEAR);
|
||||||
int fromYear = fromDate.get(year);
|
|
||||||
int toYear = toDate.get(year);
|
|
||||||
if (Math.abs(fromYear - toYear) > MAX_YEARS) {
|
if (Math.abs(fromYear - toYear) > MAX_YEARS) {
|
||||||
toDate.set(year, fromYear + (future ? MAX_YEARS : -MAX_YEARS));
|
toDate.set(Calendar.YEAR, fromYear + (future ? MAX_YEARS : -MAX_YEARS));
|
||||||
}
|
}
|
||||||
|
|
||||||
int diff = 0;
|
int diff = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user