倒数计时器迅速

时间:2016-07-31 15:52:34

标签: swift nsdate

我正在我的应用程序中开发一个倒数计时器,但我不知道它为什么不起作用。

let formatter = NSDateFormatter()
let userCalendar = NSCalendar.currentCalendar()
let requestedComponent: NSCalendarUnit = [
//NSCalendarUnit.Month,
//NSCalendarUnit.Day,
NSCalendarUnit.Hour,
NSCalendarUnit.Minute,
NSCalendarUnit.Second

]

  func printTime()
{
   formatter.dateFormat = "MM/dd/yy hh:mm:ss a"
    //let startTime = NSDate()
    let startTime = formatter.dateFromString("05/12/16 0:00:00 a")
    let endTime = formatter.dateFromString("12/25/16 8:00:00 a")
    let timeDifference = userCalendar.components(requestedComponent, fromDate: startTime!, toDate: endTime!, options: [])
    TimeLabel.text = " \(timeDifference.hour)Hours \(timeDifference.minute)Minutes \(timeDifference.second) Seconds"
}


    let timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: #selector(printTime), userInfo: nil, repeats: true)
    timer.fire()

如果我离开:

let startTime = NSDate()

和评论

let startTime = formatter.dateFromString("05/12/16 0:00:00 a")

它完美无缺,但它从当前的时间和日期开始。 我需要一个特定的日期和时间,在我的情况下是“05/12/16 0:00:00 a”,时间应该从那个日期和小时开始倒计时,而不是从现在开始。

1 个答案:

答案 0 :(得分:1)

没有发生任何事情的原因是因为您总是在比较相同的两个日期:startTimeendTime。这两个日期之间的差异将始终完全相同。如果您希望逐步倒计时,则需要相应地更改其中一个。 NSDate()版本有效的原因是因为startTime正在改变 - 无论当前日期是什么。