我正在尝试将“小时:分钟”中的一段时间转换为“分钟”。时间以字符串形式给出,我希望返回Double of minutes。
目前我正在使用以下功能:
func convertMinHoursToDouble(length: String) -> Double {
var hours = 0.0
var minutes = 0.0
let lengthCleaned = length.stringByReplacingOccurrencesOfString(":", withString: "")
var count = 0
for char in lengthCleaned.characters {
if count == 0 {
hours = Double("\(char)")! * 60
} else if count == 1 {
minutes = Double("\(char)")! * 10
} else if count == 2 {
minutes = Double("\(char)")! + minutes
}
++count
}
return hours+minutes
}
let time = "2:16"
let convertedTime = convertMinHoursToDouble(time)
print(convertedTime) // prints 136.0
这是有效的,但我试图以更多功能/ Swift方式执行此操作。如何使用reduce功能完成。这是我能找到最接近解决方案的。
let convertedTime = time.characters.reduce(0) { (dub, char) in dub + Double(String(char))! }
答案 0 :(得分:4)
功能解决方案:
payment_method_type
将字符串拆分为组件,并减少该数组。这对于像#03; 03:24:34"以秒为单位计算时间。
如果您想要处理格式错误的字符串,可以添加其他验证逻辑:no":",多个":",无效的分钟值(例如78),等
答案 1 :(得分:4)
纯粹的Swift方式是:
let time = "02:16"
let converted = time.characters.split(":")
.flatMap { Int(String($0)) }
.reduce(0) { $0 * 60 + $1 }
print(converted) //"136\n"