2016-11-17 17 views
1

我正在尝试将已用时间添加到Date()对象(用于定时操作的恢复按钮)。将已用过的TimeInterval添加到Date()

以下是代码的简历部分,负责计算已更改的startDate。我期待它将elapsedTimeInterval添加到startDate

这是代码:

print(startDate) 
let elapsed = resumeTime - startDate.timeIntervalSinceReferenceDate 
print(elapsed) 
startDate.addTimeInterval(elapsed) 
print(startDate) 

这是当我停顿约3秒计时器约2分钟的运行时间之后的输出。

输出:

2016-11-17 08:24:15 +0000 
110.831687986851 
2016-11-17 08:26:06 +0000 

第二印刷日期应该更像:

2016-11-17 08:24:18 +0000 

定义为addTimeInterval是:

添加到TimeInterval所这个日期。

这不正是我想要的吗?我解释错了吗?

注意,resumeTime是在点击暂停按钮时定义的。它是这样设置的:

resumeTime = Date.timeIntervalSinceReferenceDate 

谢谢。

+1

'elapsed'的输出是什么? – Idan

回答

1

这是在运行约2分钟后暂停计时器约3秒钟时的输出。

虽然,您的elapsed时间是2分钟。

确保你在正确的地方开始起,还确保这条线产生所需的时间戳:

resumeTime = Date.timeIntervalSinceReferenceDate 

这里是例子的代码非常相似,你的,addTimeInterval没有很好地工作。

let resume = Date().timeIntervalSinceReferenceDate + 2 

print(startDate) 
let elapsed = resume - startDate.timeIntervalSinceReferenceDate 
print(elapsed) 
startDate.addTimeInterval(elapsed) 
print(startDate) 

输出

2016-11-17 08:53:34 +0000 
2.00815904140472 
2016-11-17 08:53:36 +0000 
+0

在阅读您的答案后,我想出了它,请参阅我添加的答案。我投票赞成你,因为它几乎是我想要的。我不应该使用'startDate'。 – toast

1

我想在你的代码中的错误是,你永远不设置startDate了,所以你elapsed计算总是基于当应用程序第一次运行,没有时间自上次暂停以来已过去。

相关问题