EtchDroid/app/src/main/java/eu/depau/etchdroid/utils/NumberToTimeString.kt

31 lines
922 B
Kotlin

package eu.depau.etchdroid.utils
private val timeStrings = arrayOf("s", "m", "h", "d")
private val timeDivs = arrayOf(60, 60, 24)
fun <T> humanReadableTimeDelta(time: T): String where T : Number {
var dbTime = time.toDouble() / 1000.0
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)