如何将字符串解析为NSTimeInterval

Bar*_*nas 10 ios swift

如何解析像字符串值12:02:21.3213NSTimeIntervalNSDateComponentsFormatter自iOS8起可用,仅支持格式化,不支持解析.

Tor*_*ley 9

Bartosz Hernas提供的解决方案为我工作,谢谢!

为方便起见,这里是Swift 3:

func parseDuration(_ timeString:String) -> TimeInterval {
    guard !timeString.isEmpty else {
        return 0
    }

    var interval:Double = 0

    let parts = timeString.components(separatedBy: ":")
    for (index, part) in parts.reversed().enumerated() {
        interval += (Double(part) ?? 0) * pow(Double(60), Double(index))
    }

    return interval
}
Run Code Online (Sandbox Code Playgroud)


Bar*_*nas 8

以下是在Swift中如何做到这一点:

func parseDuration(timeString:String) -> NSTimeInterval {
    guard !timeString.isEmpty else {
        return 0
    }

    var interval:Double = 0

    let parts = timeString.componentsSeparatedByString(":")
    for (index, part) in parts.reverse().enumerate() {
        interval += (Double(part) ?? 0) * pow(Double(60), Double(index))
    }

    return interval
}
Run Code Online (Sandbox Code Playgroud)

它适用于像 2:12:12, 02:01:23.123213


You*_*nzr 6

这是我用@Bartosz 回答的 Swift 5 版本

extension String {
    func convertToTimeInterval() -> TimeInterval {
        guard self != "" else {
            return 0
        }

        var interval:Double = 0

        let parts = self.components(separatedBy: ":")
        for (index, part) in parts.reversed().enumerated() {
            interval += (Double(part) ?? 0) * pow(Double(60), Double(index))
        }

        return interval
    }
}
Run Code Online (Sandbox Code Playgroud)