我设置了NSTimer.scheduledTimerWithTimeInterval
方法,每20分钟有一个间隔。我希望能够找出应用程序进入后台模式时剩余的时间。我如何知道间隔剩余多少时间?
由于
答案 0 :(得分:5)
您可以访问NSTimer的fireDate
,它会告诉您计时器什么时候再次开火。
现在与fireDate
之间的差异是您可以使用NSDate's timeIntervalSinceDate
API计算的时间间隔。
E.G。类似的东西:
let fireDate = yourTimer.fireDate
let nowDate = NSDate()
let remainingTimeInterval = nowDate.timeIntervalSinceDate(fireDate)
答案 1 :(得分:0)
使用@Michael Dautermann的解决方案时,正常的Swift类型Timer
和Date
我注意到,他的解决方案会给你一个负值,例如:
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)