I'm trying to format my String in a certain format. Below is the full code:
package com.my.app.aml.util;
import org.apache.commons.lang3.time.DurationFormatUtils;
import java.time.Duration;
import java.time.LocalDateTime;
import static com.my.app.aml.util.DateTimeUtil.currentTime;
import static java.time.Duration.between;
import static org.apache.commons.lang3.time.DurationFormatUtils.formatDuration;
import static org.joda.time.DateTimeConstants.*;
public class TestDuration {
private static String slaAsStringNew(LocalDateTime tillDate) {
if (tillDate == null) {
return null;
}
if (tillDate.isBefore(currentTime())) {
Duration duration = between(tillDate, currentTime());
return "-" + formatDuration(duration.toMillis(), "d:H:m", true);
} else {
Duration duration = between(currentTime(), tillDate);
return formatDuration(duration.toMillis(), "d:H:m", true);
}
}
public static void main(String[] args) {
System.out.println(slaAsStringNew(LocalDateTime.now().minusDays(4).plusHours(1).plusMinutes(30)));
}
}
The output is -3:22:30
however I want to format it as: -3d 22h 30m
. The obvious splitting and stitching approach just felt a bit of a mess so looking for other elegant solutions.