in src/main/java/org/apache/commons/lang3/time/DurationFormatUtils.java [430:489]
public static String formatDurationWords(
final long durationMillis,
final boolean suppressLeadingZeroElements,
final boolean suppressTrailingZeroElements) {
// This method is generally replaceable by the format method, but
// there are a series of tweaks and special cases that require
// trickery to replicate.
String duration = formatDuration(durationMillis, "d' days 'H' hours 'm' minutes 's' seconds'");
if (suppressLeadingZeroElements) {
// this is a temporary marker on the front. Like ^ in regexp.
duration = " " + duration;
final String text = duration;
String tmp = Strings.CS.replaceOnce(text, " 0 days", StringUtils.EMPTY);
if (tmp.length() != duration.length()) {
duration = tmp;
final String text1 = duration;
tmp = Strings.CS.replaceOnce(text1, " 0 hours", StringUtils.EMPTY);
if (tmp.length() != duration.length()) {
duration = tmp;
final String text2 = duration;
tmp = Strings.CS.replaceOnce(text2, " 0 minutes", StringUtils.EMPTY);
duration = tmp;
}
}
if (!duration.isEmpty()) {
// strip the space off again
duration = duration.substring(1);
}
}
if (suppressTrailingZeroElements) {
final String text = duration;
String tmp = Strings.CS.replaceOnce(text, " 0 seconds", StringUtils.EMPTY);
if (tmp.length() != duration.length()) {
duration = tmp;
final String text1 = duration;
tmp = Strings.CS.replaceOnce(text1, " 0 minutes", StringUtils.EMPTY);
if (tmp.length() != duration.length()) {
duration = tmp;
final String text2 = duration;
tmp = Strings.CS.replaceOnce(text2, " 0 hours", StringUtils.EMPTY);
if (tmp.length() != duration.length()) {
final String text3 = tmp;
duration = Strings.CS.replaceOnce(text3, " 0 days", StringUtils.EMPTY);
}
}
}
}
// handle plurals
duration = " " + duration;
final String text = duration;
duration = Strings.CS.replaceOnce(text, " 1 seconds", " 1 second");
final String text1 = duration;
duration = Strings.CS.replaceOnce(text1, " 1 minutes", " 1 minute");
final String text2 = duration;
duration = Strings.CS.replaceOnce(text2, " 1 hours", " 1 hour");
final String text3 = duration;
duration = Strings.CS.replaceOnce(text3, " 1 days", " 1 day");
return duration.trim();
}