如何在swift中转换youtube api的持续时间?

son*_*ony 3 xcode ios swift

我是一个新的快速开发者,我不知道如何将持续时间从youtube api转换为正常的时间格式?

moh*_*ish 7

考虑hh:mm:ss格式的返回值的更简单的实现.

extension String {

    func getYoutubeFormattedDuration() -> String {

        let formattedDuration = self.stringByReplacingOccurrencesOfString("PT", withString: "").stringByReplacingOccurrencesOfString("H", withString: ":").stringByReplacingOccurrencesOfString("M", withString: ":").stringByReplacingOccurrencesOfString("S", withString: "")

        let components = formattedDuration.componentsSeparatedByString(":")
        var duration = ""
        for component in components {
            duration = duration.characters.count > 0 ? duration + ":" : duration
            if component.characters.count < 2 {
                duration += "0" + component
                continue
            }
            duration += component
        }

        return duration

    }

}
Run Code Online (Sandbox Code Playgroud)

**斯威夫特3

  func getYoutubeFormattedDuration() -> String {

    let formattedDuration = self.replacingOccurrences(of: "PT", with: "").replacingOccurrences(of: "H", with:":").replacingOccurrences(of: "M", with: ":").replacingOccurrences(of: "S", with: "")

    let components = formattedDuration.components(separatedBy: ":")
    var duration = ""
    for component in components {
        duration = duration.characters.count > 0 ? duration + ":" : duration
        if component.characters.count < 2 {
            duration += "0" + component
            continue
        }
        duration += component
    }

    return duration

}
Run Code Online (Sandbox Code Playgroud)

样本结果:

"PT3H2M31S".getYoutubeFormattedDuration() //returns "03:02:31"
"PT2M31S".getYoutubeFormattedDuration() //returns "02:31"
"PT31S".getYoutubeFormattedDuration() //returns "31"
Run Code Online (Sandbox Code Playgroud)


A.G*_*A.G 0

使用字符串扩展:

extension String{

    func formatDurationsFromYoutubeAPItoNormalTime (targetString : String) ->String{

        var timeDuration : NSString!
        let string: NSString = targetString

        if string.rangeOfString("H").location == NSNotFound && string.rangeOfString("M").location == NSNotFound{

            if string.rangeOfString("S").location == NSNotFound {
                timeDuration = NSString(format: "00:00")
            } else {
                var secs: NSString = targetString
                secs = secs.substringFromIndex(secs.rangeOfString("PT").location + "PT".characters.count)
                secs = secs.substringToIndex(secs.rangeOfString("S").location)

                timeDuration = NSString(format: "00:%02d", secs.integerValue)
            }
        }
        else if string.rangeOfString("H").location == NSNotFound {
            var mins: NSString = targetString
            mins = mins.substringFromIndex(mins.rangeOfString("PT").location + "PT".characters.count)
            mins = mins.substringToIndex(mins.rangeOfString("M").location)

            if string.rangeOfString("S").location == NSNotFound {
                timeDuration = NSString(format: "%02d:00", mins.integerValue)
            } else {
                var secs: NSString = targetString
                secs = secs.substringFromIndex(secs.rangeOfString("M").location + "M".characters.count)
                secs = secs.substringToIndex(secs.rangeOfString("S").location)

                timeDuration = NSString(format: "%02d:%02d", mins.integerValue, secs.integerValue)
            }
        } else {
            var hours: NSString = targetString
            hours = hours.substringFromIndex(hours.rangeOfString("PT").location + "PT".characters.count)
            hours = hours.substringToIndex(hours.rangeOfString("H").location)

            if string.rangeOfString("M").location == NSNotFound && string.rangeOfString("S").location == NSNotFound {
                timeDuration = NSString(format: "%02d:00:00", hours.integerValue)
            } else if string.rangeOfString("M").location == NSNotFound {
                var secs: NSString = targetString
                secs = secs.substringFromIndex(secs.rangeOfString("H").location + "H".characters.count)
                secs = secs.substringToIndex(secs.rangeOfString("S").location)

                timeDuration = NSString(format: "%02d:00:%02d", hours.integerValue, secs.integerValue)
            } else if string.rangeOfString("S").location == NSNotFound {
                var mins: NSString = targetString
                mins = mins.substringFromIndex(mins.rangeOfString("H").location + "H".characters.count)
                mins = mins.substringToIndex(mins.rangeOfString("M").location)

                timeDuration = NSString(format: "%02d:%02d:00", hours.integerValue, mins.integerValue)
            } else {
                var secs: NSString = targetString
                secs = secs.substringFromIndex(secs.rangeOfString("M").location + "M".characters.count)
                secs = secs.substringToIndex(secs.rangeOfString("S").location)
                var mins: NSString = targetString
                mins = mins.substringFromIndex(mins.rangeOfString("H").location + "H".characters.count)
                mins = mins.substringToIndex(mins.rangeOfString("M").location)

                timeDuration = NSString(format: "%02d:%02d:%02d", hours.integerValue, mins.integerValue, secs.integerValue)
            }
        }
        return timeDuration as String
    }

}
Run Code Online (Sandbox Code Playgroud)

用法:

override func viewWillAppear(animated: Bool) {

let youtubeVideoDurationString = "PT15M51S"   

let resultString = youtubeVideoDurationString.formatDurationsFromYoutubeAPItoNormalTime(youtubeVideoDurationString)
    print(resultString)

}
Run Code Online (Sandbox Code Playgroud)