LeoColman
11/24/2021, 1:07 AMvar millis = 123L
var i = 0
buildList<Pair<TimeUnit, Long>> {
add(Year to (millis / MillisInYear))
millis -= (get(i++).second * MillisInYear)
add(Month to (millis / MillisInMonth))
millis -= (get(i++).second * MillisInMonth)
add(Day to (millis / MillisInDay))
millis -= (get(i++).second * MillisInDay)
add(Hour to (millis / MillisInHour))
millis -= (get(i++).second * MillisInHour)
add(Minute to (millis / MillisInMinute))
millis -= (get(i++).second * MillisInMinute)
add(Second to (millis / 1_000))
millis -= (get(i++).second * 1_000)
add(Millisecond to millis)
}
This code is used to make a timer/counter (picture)
However, it's very ugly as it is. How can I enhance this?Joffrey
11/24/2021, 8:06 AMLeoColman
11/24/2021, 9:36 AMbezrukov
11/24/2021, 11:18 AM123.milliseconds.toComponents { days, hours, minutes, seconds, nanoseconds ->
//...
}
rook
11/24/2021, 4:19 PMlistOf(Year, Month, Day, Hour, Minute, Second, Millisecond).forEach {
val unitsInTotal = millis / it.millis
add(it to unitsInTotal)
millis -= unitsInTotal * it.millis
}
Daniel
11/24/2021, 7:23 PMJoffrey
11/24/2021, 7:34 PMjimn
11/26/2021, 8:48 AMlistOf( {duration.days} to {duration-=it.asDays()}, {duration.hours} to {duration-=it.asHours}, )
and so on to reduce a duration and leave the remainders for further reduction