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

Convert Minutes to HH:MM:SS - Swift

我在数组中有一些文本字段。 HH:MM:SS。我有两个问题,一个是当其中一个字段留空时,应用程序崩溃,我希望它在空白时只读为“0”。其次,我在下面使用将 HH:MM:SS 转换为分钟。我做 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)

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

let array = [0,18,30]
var n = 3600
let seconds = array.reduce(0) {
    defer { n /= 60 }
    return [=10=] +  * 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"