From aaa74934748a8fe68ebfacae59860ae406a60cd5 Mon Sep 17 00:00:00 2001 From: Davide Depau Date: Tue, 14 Aug 2018 18:48:44 +0200 Subject: [PATCH] Add kotlin extension to get HR time --- .../depau/ddroid/utils/NumberToTimeString.kt | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 app/src/main/java/eu/depau/ddroid/utils/NumberToTimeString.kt diff --git a/app/src/main/java/eu/depau/ddroid/utils/NumberToTimeString.kt b/app/src/main/java/eu/depau/ddroid/utils/NumberToTimeString.kt new file mode 100644 index 0000000..70faf20 --- /dev/null +++ b/app/src/main/java/eu/depau/ddroid/utils/NumberToTimeString.kt @@ -0,0 +1,31 @@ +package eu.depau.ddroid.utils + +private val timeStrings = arrayOf("s", "m", "h", "d") +private val timeDivs = arrayOf(60, 60, 24) + +fun humanReadableTimeDelta(time: T): String where T : Number { + var dbTime = time.toDouble() + var outString = "" + + for (i in 0..(timeDivs.size-1)) { + val div = timeDivs[i] + val str = timeStrings[i] + + outString = "${(dbTime % div).toInt()}$str$outString" + + if (dbTime < div) + return outString + + outString = " $outString" + dbTime /= div + } + + return "${dbTime.toInt()}${timeStrings[-1]} $outString" +} + +fun Long.toHRTime() = humanReadableTimeDelta(this) +fun Float.toHRTime() = humanReadableTimeDelta(this) +fun Double.toHRTime() = humanReadableTimeDelta(this) +fun Int.toHRTime() = humanReadableTimeDelta(this) +fun Byte.toHRTime() = humanReadableTimeDelta(this) +fun Short.toHRTime() = humanReadableTimeDelta(this) \ No newline at end of file