【问题标题】:Convert Minutes to HH:MM:SS - Swift将分钟转换为 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

标签: swift xcode decimal


【解决方案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% 的解决方案,我从那里找到了它,以使其以我想要的方式在我的应用程序中工作。欣赏,周末愉快。
猜你喜欢
  • 2014-09-18
  • 2015-12-29
  • 1970-01-01
  • 2013-07-30
  • 1970-01-01
  • 1970-01-01
  • 2013-02-05
  • 1970-01-01
  • 2021-05-05
相关资源
最近更新 更多