определять
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. Не нужно сначала извлекать часы.