如何找到 NSTimer 剩余的时间间隔

How do I find the time interval remaining from NSTimer

我设置了一个 NSTimer.scheduledTimerWithTimeInterval 方法,每 20 分钟间隔一次。我希望能够找出当应用程序进入后台模式时还剩下多少时间。我如何知道间隔还剩多少时间?

谢谢

您可以访问 NSTimer 的 fireDate,它会告诉您计时器何时再次启动。

现在和 fireDate 之间的区别是您可以使用 NSDate's timeIntervalSinceDate API.

计算的间隔

类似于:

let fireDate = yourTimer.fireDate
let nowDate = NSDate()
let remainingTimeInterval = nowDate.timeIntervalSinceDate(fireDate)

当使用@Michael Dautermann 的解决方案与正常 Swift 类型 TimerDate 我注意到,他的解决方案会给你一个负值,例如:

let fireDate = yourTimer.fireDate
let nowDate = Date()
let remainingTimeInterval = nowDate.timeIntervalSinceDate(fireDate)
//above value is negative e.g. when the timers interval was 2 sec. and you 
//check it after 0.5 secs this was -1,5 sec.

当您在 Timer.scheduledTimer(timeInterval:,target:,selector:,userInfo:,repeats:) 函数中插入一个负值时,它会导致定时器设置为 0.1 毫秒,正如 Documentation of the Timer 提到的那样。

所以在我的例子中,我不得不使用 nowDate.timeIntervalSinceDate(fireDate) 结果的负值:-nowDate.timeIntervalSinceDate(fireDate)