一尘不染

Swift-将整数转换为小时/分钟/秒

swift

关于 Swift中的 时间转换,我有一个(有点?)基本问题。

我有一个整数,希望将其转换为小时/分钟/秒。

示例: Int = 27005会给我:

7 Hours  30 Minutes 5 Seconds

我知道如何在PHP中执行此操作,但是可惜,Swift不是PHP :-)

我如何迅速实现这一目标的任何技巧都太棒了!先感谢您!


阅读 843

收藏
2020-07-07

共1个答案

一尘不染

定义

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使用etc等字词将其打印出来,请使用以下命令:

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)
}
2020-07-07