Of the Duration class in the new JSR 310 date API (java.time package) available in Java 8 and later, the javadoc says :
This class models a quantity o
By below code i got this duration output:
1 day, 2 hours, 5 minutes
code example:
private String getDurationAsString(Duration duration)
{
StringBuilder durationAsStringBuilder = new StringBuilder();
if (duration.toDays() > 0)
{
String postfix = duration.toDays() == 1 ? "" : "s";
durationAsStringBuilder.append(duration.toDays() + " day");
durationAsStringBuilder.append(postfix);
}
duration = duration.minusDays(duration.toDays());
long hours = duration.toHours();
if (hours > 0)
{
String prefix = Utils.isEmpty(durationAsStringBuilder.toString()) ? "" : ", ";
String postfix = hours == 1 ? "" : "s";
durationAsStringBuilder.append(prefix);
durationAsStringBuilder.append(hours + " hour");
durationAsStringBuilder.append(postfix);
}
duration = duration.minusHours(duration.toHours());
long minutes = duration.toMinutes();
if (minutes > 0)
{
String prefix = Utils.isEmpty(durationAsStringBuilder.toString()) ? "" : ", ";
String postfix = minutes == 1 ? "" : "s";
durationAsStringBuilder.append(prefix);
durationAsStringBuilder.append(minutes + " minute");
durationAsStringBuilder.append(postfix);
}
return durationAsStringBuilder.toString();
}
Explanation:
By using Duration interface you can easily find the exact String display you want. you just need to reduce the bigger TemporalUnit from current duration.
for example: