在 Swift 中从 double 获取分钟和秒

问题描述 投票:0回答:3

我当前以秒为单位存储时间(例如 70.149 秒)。我如何轻松获得分钟和秒?我的意思是 70.149 秒是 1 分 10 秒。我怎样才能快速轻松地做到这一点?

这是我想做的一个例子。

let time:Double = 70.149 //This can be any value
let mins:Int = time.minutes //In this case it would be 1
let secs:Int = time.seconds //And this would be 10

我如何使用 Swift 2 OS X(不是 iOS)来做到这一点

time swift2
3个回答
3
投票

类似这样的:

let temp:Int = Int(time + 0.5) // Rounding
let mins:Int = temp / 60
let secs:Int = temp % 60

3
投票

这将是一个相对简单的解决方案。 值得注意的是,这会截断部分秒。 如果您想对此进行控制,则必须在第三行使用浮点数学,并在转换为

trunc()
之前对结果调用
ceil()
/
floor()
/
Int

let time:Double = 70.149 //This can be any value
let mins:Int = Int(time) / 60 //In this case it would be 1
let secs:Int = Int(time - Double(mins * 60)) //And this would be 10

1
投票

斯威夫特5

日期组件格式化程序在向用户显示人类可读的文本时具有很多优势。这个函数需要双倍的时间。

func humanReadable(time:Double) -> String {
    let formatter = DateComponentsFormatter()
    formatter.allowedUnits = [.hour, .minute, .second]
    formatter.unitsStyle = .full
    if let str = formatter.string(from: time) {
        return str
    }
    return "" // empty string if number fails
}

// will output '1 minute, 10 seconds' for 70.149
© www.soinside.com 2019 - 2024. All rights reserved.