From c72029aeba896a38b95b569601af24ba09049a81 Mon Sep 17 00:00:00 2001
From: Benoit Lavenier <benoit.lavenier@e-is.pro>
Date: Wed, 1 Jun 2022 10:43:12 +0200
Subject: [PATCH] [enh] Add DateUtils.elapsedTime() , useful for log

---
 .../java/org/duniter/core/util/DateUtils.java | 20 +++++++++++++++++++
 1 file changed, 20 insertions(+)

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 46daf366..7ee52332 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();
+    }
 }
-- 
GitLab