Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何获得两次之间的时差_Ios_Swift_Time_Nsdate_Nsdateformatter - Fatal编程技术网

Ios 如何获得两次之间的时差

Ios 如何获得两次之间的时差,ios,swift,time,nsdate,nsdateformatter,Ios,Swift,Time,Nsdate,Nsdateformatter,我正在开发iOS swift应用程序。我运行计时器6分钟。在这6分钟内,用户可以做一些任务,我也显示取消选项。用户也可以在计时器启动后取消该任务 在UI中,我在标签中显示计时器减量,如06:00、05:59到00:00 所以,我必须计算用户在该任务上工作了多少时间 所以,总共6分钟的持续时间减去用户工作时间(比如10秒,1分钟) 但是,它总是变为0 有什么建议吗?要解决这个问题,你需要熟悉时间间隔 最简单的方法可能是获取自1970年以来的时间间隔,它表示自01.01.1970 00:00以来的秒

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

在UI中,我在标签中显示计时器减量,如06:00、05:59到00:00

所以,我必须计算用户在该任务上工作了多少时间

所以,总共6分钟的持续时间减去用户工作时间(比如10秒,1分钟)

但是,它总是变为0


有什么建议吗?

要解决这个问题,你需要熟悉时间间隔

最简单的方法可能是获取自1970年以来的
时间间隔,它表示自01.01.1970 00:00以来的秒数。

之后,您只需将
newDate.timeIntervalSince1970
-
oldDate.timeIntervalSince1970

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

让oldDate:Date=您的旧日期
让newDate:Date=您的新日期
让差异=newDate.timeIntervalSince1970-oldDate.timeIntervalSince1970

您有
时间间隔自1970年起
将两个日期都转换为该日期并进行比较?让startTime=Date().timeIntervalSince1970让endTime=Date().addingTimeInterval(3600)。timeIntervalSince1970让值:Double=endTime-startTime如果要执行6个时间间隔,请在检查剩余时间=6分钟时间-当前时间后,首先在当前时间中添加6分钟,使用字符串作为时间间隔来获取经过的时间是错误的方法。您应该使用
TimeInterval
(以秒为单位),并在希望向用户显示时间时简单地转换为字符串。
  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)

}