小编典典

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

all

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

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

示例: Int = 27005会给我:

7 Hours  30 Minutes 5 Seconds

我知道如何在 PHP 中做到这一点,但是 swift 不是 PHP :-)

关于如何快速实现这一目标的任何提示都会很棒!先感谢您!


阅读 127

收藏
2022-07-28

共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如果您确实需要使用单词等打印出来,请使用以下内容:

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)
}
2022-07-28