[Feature] Get duration from string in format of '00 hr 00 min 00 sec', in any combination

This commit is contained in:
Jace 2022-11-19 13:03:51 +08:00
parent 263f74fb9c
commit 654602b933

View file

@ -1153,6 +1153,27 @@ fun getDurationFromString(input: String?): Int? {
return values[1].toIntOrNull()
}
}
Regex("(\\s\\d+\\shr)|(\\s\\d+\\shour)|(\\s\\d+\\smin)|(\\s\\d+\\ssec)").findAll(input).let { values ->
var seconds = 0
values.forEach {
val time_text = it.value
if (time_text.isNotBlank()) {
val time = time_text.filter { s -> s.isDigit() }.trim().toInt()
val scale = time_text.filter { s -> !s.isDigit() }.trim()
//println("Scale: $scale")
val timeval = when (scale) {
"hr", "hour" -> time * 60 * 60
"min" -> time * 60
"sec" -> time
else -> 0
}
seconds += timeval
}
}
if (seconds > 0) {
return seconds / 60
}
}
return null
}