【问题标题】:How do I find the time interval remaining from NSTimer如何从 NSTimer 中找到剩余的时间间隔
【发布时间】:2015-10-18 13:03:22
【问题描述】:

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

谢谢

【问题讨论】:

    标签: swift nstimer nstimeinterval


    【解决方案1】:

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

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

    例如类似:

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

    【讨论】:

    • 谢谢!我试试看!
    • 略短:yourTimer.fireDate.timeIntervalSinceNow.
    【解决方案2】:

    当使用@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)

    【讨论】:

      猜你喜欢
      • 2021-10-26
      • 1970-01-01
      • 2013-01-22
      • 2020-09-25
      • 2011-04-11
      • 2011-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多