将已过去的TimeInterval添加到Date()

时间:2016-11-17 08:08:16

标签: ios objective-c swift

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

以下是负责计算变更startDate的代码的恢复部分。我希望它将elapsed TimeInterval添加到startDate

这是代码:

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

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

输出:

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

感谢。

2 个答案:

答案 0 :(得分:1)

  

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

虽然,<li id ="productStock" class="productStock">In Stock: 4</li> <script> var numberInStock = 0 // actual number of stock var msg = ''; if (numberInStock > 0) { msg = 'In stock'; } else { msg = 'Out of stock'; } $('#productStock').html(msg) </script> 时间是2分钟。

确保您在正确的位置开始经过,同时确保此行生成所需的时间戳:

elapsed

以下是与您的代码非常相似的代码示例,resumeTime = Date.timeIntervalSinceReferenceDate 运行良好。

addTimeInterval

<强>输出

let resume = Date().timeIntervalSinceReferenceDate + 2

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

答案 1 :(得分:1)

我认为您的代码中的错误是您再也没有设置LR_wbSelect,因此您的startDate计算总是基于应用首次运行的时间,而不是自您上次启动以来经过的时间暂停。