将分钟转换为HH:MM:SS-Swift

问题描述 投票:-1回答:1

我在数组中有一些文本字段。 HH:MM:SS。我有两个问题,一个是当其中一个字段留空时,应用程序崩溃,我希望它在空白时读为“ 0”。其次,我在下面使用将HH:MM:SS转换为Minutes。我做0:18:30,下面到小数的数学结果为18.5

现在如何将其转换回HH:MM:SS? array[0]是小时,array[1]是分钟,array[2]是秒。

stepOne = (Float(array[0])! * 60) + Float(array[1])! + (Float(array[2])! / 60)
swift xcode decimal
1个回答
0
投票

您需要计算秒数而不是分钟数。使用reduce方法,只需将第一个元素乘以3600,然后在每次迭代后将乘数除以60。接下来,您可以使用DateComponentsFormatter使用.positional单位样式​​向用户显示最终的秒时间间隔:

let array = [0,18,30]
var n = 3600
let seconds = array.reduce(0) {
    defer { n /= 60 }
    return $0 + $1 * n
}

let dcf = DateComponentsFormatter()
dcf.allowedUnits = [.hour, .minute, .second]
dcf.unitsStyle = .positional
dcf.zeroFormattingBehavior = .pad
let string = dcf.string(from: TimeInterval(seconds))  // "00:18:30"
© www.soinside.com 2019 - 2024. All rights reserved.