一尘不染

Swift-将毫秒转换成分钟,秒和毫秒

swift

我正在编写一个赛车应用程序,想要将大量毫秒转换为minutes:seconds.milliseconds(例如1:32.361)。目前,我只是通过数学(minutes / 60000)进行运算,然后求余数并进一步除法,依此类推,但是我发现它时不时关闭1毫秒。我知道这听起来似乎没什么大不了的,但是我试图找到和的平均值,1:32.004然后1:32.004返回1:32.003,这意味着它输入不正确,而应用程序的其余部分无法处理。

有没有一种方法使用NSDateNSDateFormatter格式化毫秒到MM或类似的东西:ss.mmm?


阅读 937

收藏
2020-07-07

共1个答案

一尘不染

您可以创建一个TimeInterval扩展名来格式化您的经过时间,如下所示:

Xcode 8.3.3•Swift 3.1

extension TimeInterval {
    var minuteSecondMS: String {
        return String(format:"%d:%02d.%03d", minute, second, millisecond)
    }
    var minute: Int {
        return Int((self/60).truncatingRemainder(dividingBy: 60))
    }
    var second: Int {
        return Int(truncatingRemainder(dividingBy: 60))
    }
    var millisecond: Int {
        return Int((self*1000).truncatingRemainder(dividingBy: 1000))
    }
}

extension Int {
    var msToSeconds: Double {
        return Double(self) / 1000
    }
}

let seconds = 131.531   // 131.531
let time = seconds.minuteSecondMS  //  "2:11.531"
let millisecond = seconds.millisecond    // 531

let ms = 1111
let sec = ms.msToSeconds.minuteSecondMS   // "0:01.111"
2020-07-07