倒数计时器 swift

Countdown timer swift

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

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”,时间应该从那个日期和时间开始倒计时,而不是从现在开始。

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