我正在开发iOS swift应用程序。我正在运行计时器6分钟。在这6分钟内,用户可以执行某些任务,我也正在显示取消选项。计时器启动后,用户也可以取消该任务。
在用户界面中,我在标签上显示计时器的递减值,例如06:00、05:59到00:00
因此,我必须计算用户完成该任务的时间。
因此,总持续时间为6分钟减去用户的工作时间(例如10秒,1分钟)
let difference = testDuration(testTime: "00:10") //assume 10 seconds user taken test
func testDuration(testTime: String) -> String {
let totalTestDuration = "06:00"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "mm:ss"
let totalTestTime = dateFormatter.date(from: totalTestDuration)!
let userWalkedTime = dateFormatter.date(from: testTime)!
let calendar = Calendar.current
let totalComponents = calendar.dateComponents([.minute, .second], from: totalTestTime)
let userWalkedComponents = calendar.dateComponents([.minute, .second], from: userWalkedTime)
let difference = calendar.dateComponents([.minute], from: totalComponents, to: userWalkedComponents).minute!
print("difference", difference)
return String(difference)
}
但是,总会变成0
有什么建议吗?
答案 0 :(得分:1)
要解决此问题,您需要熟悉TimeIntervals。
最简单的方法可能是获取timeIntervalSince1970
,它表示自 1970年1月1日00:00以来的秒数。。
之后,您可以简单地将newDate.timeIntervalSince1970
-oldDate.timeIntervalSince1970
这为您提供了这两个日期之间的秒数。然后,您可以将结果转换为小时,天等。
let oldDate: Date = Your Old Date
let newDate: Date = Your New Date
let difference = newDate.timeIntervalSince1970 - oldDate.timeIntervalSince1970