【发布时间】:2017-06-14 22:19:42
【问题描述】:
请耐心等待我一周前学习了 Swift 和 Xcode(我正在创建一个应用来在假期学习 Swift)
我使用 scheduleTimer 创建了一个计时器来充当秒表。秒和分钟运行良好,但我无法获得工作时间。我做错了什么?
currentTime = 0
timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { _ in
self.currentTime += 1
let hoursPortion = String(format: "%02d", CGFloat(self.currentTime) * 60)
let minutesPortion = String(format: "%02d", self.currentTime / 60)
let secondsPortion = String(format: "%02d", self.currentTime % 60)
//let tenPortion = String(format: "%d", self.currentTime * 10 % 10)
self.TimerDisplay.text = "\(hoursPortion):\(minutesPortion):\(secondsPortion)"
}
【问题讨论】:
-
如果当前时间经过秒,则小时为
currentTime/3600。我不知道你为什么要乘以 20。无论如何,这种方法可能不是最好的。计时器不准确。更好的方法是在秒表启动时创建Date,并在计时器计时时计算该日期与“现在”之间的差异。DateComponents可以帮助你从日期获取字段。 -
是的,20 应该是 3600,但我将它设置为 20,所以我不必等待一个小时来查看它是否有效。我将 hoursPortion 设置为相乘,因为我认为 1 小时 = 3600 秒。
-
不,你想除法,因为 1 小时 = 3600 秒;如果
currentTime= 3600 那么就是1小时,所以currentTime / 3600