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

Posted

技术标签:

【中文标题】将分钟转换为 HH:MM:SS - Swift【英文标题】:Convert Minutes to HH:MM:SS - Swift 【发布时间】:2020-02-14 18:48:26 【问题描述】:

我在一个数组中有一些文本字段。 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)

【问题讨论】:

你为什么要摆弄所有这些乘法、加法和强制展开?只需使用DateFormatter 我认为这会对您有所帮助。看看this 【参考方案1】:

您需要的是计算秒数而不是分钟数。使用 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"

【讨论】:

如何将其插入到设置为 HH MM SS 的 TextFields 数组中?谢谢! 抱歉,您能详细说明一下吗? 您可以编辑您的帖子并添加您遇到的问题的实际代码吗? 非常感谢!这帮助解决了大约 85% 的解决方案,我从那里找到了它,以使其以我想要的方式在我的应用程序中工作。欣赏,周末愉快。

以上是关于将分钟转换为 HH:MM:SS - Swift的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SQL 中将小时、分钟和秒 (HH:mm:ss) 转换为分钟和秒 (mm:ss)

将秒表“hh:mm:ss:ms”转换为存储在数据库中

将格式为“yyyy-MM-dd HH:mm:ss.m”的日期字符串转换为“yyyy-MM-dd HH:mm:ss”时出现问题

如何在 Oracle 中将毫秒转换为 hh mm ss 格式

如何将毫秒转换为“hh:mm:ss”格式?

在 SQL Server 中将 varchar 'hh:mm:ss' 转换为 datetime hh:mm:ss