Визначте
func secondsToHoursMinutesSeconds (seconds : Int) -> (Int, Int, Int) {
return (seconds / 3600, (seconds % 3600) / 60, (seconds % 3600) % 60)
}
Використовуйте
> secondsToHoursMinutesSeconds(27005)
(7,30,5)
або
let (h,m,s) = secondsToHoursMinutesSeconds(27005)
Вищенаведена функція використовує кортежі Swift для повернення трьох значень одночасно. Ви знищуєте кортеж за допомогоюlet (var, ...)
синтаксису або можете отримати доступ до окремих членів кортежу, якщо це необхідно.
Якщо вам справді потрібно роздрукувати його словами Hours
тощо, тоді використовуйте щось подібне:
func printSecondsToHoursMinutesSeconds (seconds:Int) -> () {
let (h, m, s) = secondsToHoursMinutesSeconds (seconds)
print ("\(h) Hours, \(m) Minutes, \(s) Seconds")
}
Зауважимо, що вищевказана реалізація secondsToHoursMinutesSeconds()
працює для Int
аргументів. Якщо ви хочете Double
версії, вам потрібно буде вирішити, які значення повернення - (Int, Int, Double)
чи можуть бути (Double, Double, Double)
. Ви можете спробувати щось на кшталт:
func secondsToHoursMinutesSeconds (seconds : Double) -> (Double, Double, Double) {
let (hr, minf) = modf (seconds / 3600)
let (min, secf) = modf (60 * minf)
return (hr, min, 60 * secf)
}
(seconds % 3600) % 60
можна оптимізувати доseconds % 60
. Не потрібно спочатку витягувати години.