diff --git a/duniter4j-core-shared/src/main/java/org/duniter/core/util/DateUtils.java b/duniter4j-core-shared/src/main/java/org/duniter/core/util/DateUtils.java index 46daf36648fcee4560d3c6abe3b054579c4f4ecd..7ee5233222eeb9dad98b9a56806fccc76837a4b0 100644 --- a/duniter4j-core-shared/src/main/java/org/duniter/core/util/DateUtils.java +++ b/duniter4j-core-shared/src/main/java/org/duniter/core/util/DateUtils.java @@ -85,4 +85,24 @@ public class DateUtils { return nextDayAndHour(dayOfTheWeek, hour).getTime() - System.currentTimeMillis(); } + public static String elapsedTime(long timeInMs) { + long elapsedTime = System.currentTimeMillis() - timeInMs; + StringBuilder sb = new StringBuilder(); + sb.append("in "); + if (elapsedTime < 1000) { + return sb.append(elapsedTime).append("ms").toString(); + } + double seconds = (double) elapsedTime / 1_000; + if (seconds < 60) { + return sb.append(seconds).append("s").toString(); + } + int minutesFloor = (int) Math.floor(seconds / 60); + int secondsFloor = (int) Math.floor(seconds - minutesFloor * 60); + int millis = (int) Math.floor((seconds - secondsFloor - minutesFloor * 60) * 1_000); + + return sb.append(minutesFloor).append("min ") + .append(secondsFloor).append("s ") + .append(millis).append("ms") + .toString(); + } }