首页 > 解决方案 > 如何获得两次之间的时差

问题描述

我正在开发 iOS swift 应用程序。我正在运行计时器 6 分钟。在那 6 分钟内,用户可以完成一些任务,而且我也显示了取消选项。计时器启动后,用户也可以取消该任务。

在 UI 中,我在 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

有什么建议么?

标签: iosswifttimensdatensdateformatter

解决方案


要解决这个问题,您需要熟悉 TimeIntervals。

可能最简单的方法是获取timeIntervalSince1970,它表示自01.01.1970 00:00 以来的秒数。.

之后,您可以简单地将newDate.timeIntervalSince1970-oldDate.timeIntervalSince1970

这为您提供了这两个日期之间的秒数。然后,您可以将结果转换为小时、天等。

let oldDate: Date = Your Old Date
let newDate: Date = Your New Date

let difference = newDate.timeIntervalSince1970 - oldDate.timeIntervalSince1970

推荐阅读