/*
Use integer division and modulo:
1 minute = 60 seconds
1 hour = 60 minutes
1 day = 24 hours
1 week = 7 days
*/
/*
Convert a total number of seconds into weeks, days, hours,
minutes, and seconds. The function receives the total seconds
and returns each component in a data class.
*/
data class TimeParts(
val weeks: Long,
val days: Long,
val hours: Long,
val minutes: Long,
val seconds: Long
)
fun convertSeconds(totalSecondsInput: Long): TimeParts {
val SECS_PER_MIN: Long = 60
val SECS_PER_HOUR: Long = 60 * SECS_PER_MIN
val SECS_PER_DAY: Long = 24 * SECS_PER_HOUR
val SECS_PER_WEEK: Long = 7 * SECS_PER_DAY
var totalSeconds = totalSecondsInput
// Compute each unit using integer division and modulo
val weeks: Long = totalSeconds / SECS_PER_WEEK
totalSeconds %= SECS_PER_WEEK
val days: Long = totalSeconds / SECS_PER_DAY
totalSeconds %= SECS_PER_DAY
val hours: Long = totalSeconds / SECS_PER_HOUR
totalSeconds %= SECS_PER_HOUR
val minutes: Long = totalSeconds / SECS_PER_MIN
val seconds: Long = totalSeconds % SECS_PER_MIN
return TimeParts(weeks, days, hours, minutes, seconds)
}
fun main() {
val seconds: Long = 1_000_000
val result = convertSeconds(seconds)
println("${result.weeks} weeks, " +
"${result.days} days, " +
"${result.hours} hours, " +
"${result.minutes} minutes, " +
"${result.seconds} seconds")
}
/*
run:
1 weeks, 4 days, 13 hours, 46 minutes, 40 seconds
*/