如何使事件日期倒计时?

时间:2017-09-14 10:58:30

标签: ios swift firebase countdown

我试图使用全局变量从Firebase加载,有些数字将用于倒计时。

这是我的根:

{
  "Guests" : {
    "V2016040517" : {
      "ExpirationDate" : "09/01/2018",
      "yearsend" : "2017",
      "monthsend" : "01",
      "secondsend" : "10"
    }
  }
}

问题是,我不能将字符串用作int。如果我删除双引号,Firebase控制台会给我错误。

func popolalista() {

        if a == a {
            lista.append("")
        }

        if b == b {
            //print current date
            let date = Date()
            let formatter = DateFormatter()
            formatter.dateFormat = "yyyy:MM:dd:hh:mm:ss"
            let result = formatter.string(from: date)
            lista.append(result)
    }
         //calculating process
         func dateComponents(_ components: Set<Calendar.Component>,
                                   from start: Date, to end: Date) -> DateComponents
        {
            let components:[Calendar.Component] = [.hour, .minute]
            let timeDifference = Calendar.dateComponents(from: Calendar.current, to: expdate)
            let timeFormatter = DateFormatter()
            let date = Date()
            let calendar = Calendar.current

            let year = calendar.component(.year, from: date)
            let month = calendar.component(.month, from: date)
            let day = calendar.component(.day, from: date)
            let hour = calendar.component(.hour, from: stopTime!)
            let minute = calendar.component(.minute, from: stopTime!)

            stopTime = calendar.date(bySetting: .year, value: year, of: stopTime!)
            stopTime = calendar.date(bySetting: .month, value: month, of: stopTime!)
            stopTime = calendar.date(bySetting: .day, value: day, of: stopTime!)
            stopTime = calendar.date(bySetting: .hour, value: hour, of: stopTime!)
            stopTime = calendar.date(bySetting: .minute, value: minute, of: stopTime!)
        }
    }

我不明白为什么这不起作用。

计时器从当前日期开始到var&#34; expdate&#34;来自数据库。

修改

我终于成功了!!我找到了算法,但对于viewcontroller ...我还是要为tableviewcontroller开发这个挑战。它没有自动更新......为什么?

ViewController版本(效果很好)

import UIKit
import Foundation

class countdown: UIViewController {

    @IBOutlet weak var dateLabelOutlet: UILabel!

    var data = "15/09/2018 01:09"
    let currentDate = Date()
    let dateFormatter = DateFormatter()

    let userCalendar = Calendar.current

    let requestedComponent: Set<Calendar.Component> = [.day,.hour,.minute,.second,.month,.year]

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        let timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(printTime), userInfo: nil, repeats: true)
        timer.fire()

    }

    func printTime()
    {
        dateFormatter.dateFormat = "dd/MM/yyyy hh:mm"
        let startTime = Date()
        let endTime = dateFormatter.date(from: data)
        let timeDifference = userCalendar.dateComponents(requestedComponent, from: startTime, to: endTime!)

        dateLabelOutlet.text = "\(timeDifference.year!) Anni \(timeDifference.month!) Mesi \(timeDifference.day!) Giorni \(timeDifference.hour!) Ore \(timeDifference.minute!) Minuti \(timeDifference.second!) Secondi"

        if timeDifference.second! < 0 {

            dateLabelOutlet.text = "Servizio scaduto"
        }
    }
}

虽然这是我的tentativi在桌面视图上进行的:

import UIKit
import Foundation

class Testios: UIViewController, UITableViewDataSource, UITableViewDelegate {

    @IBOutlet weak var Tabella: UITableView!

    var lista: [String] = []
    var data = "16/09/2018"
    var a: String?
    var b: String?
    let currentDate = Date()
    let dateFormatter = DateFormatter()

    let userCalendar = Calendar.current

    let requestedComponent: Set<Calendar.Component> = [.day,.hour,.minute,.second,.month,.year]



    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return lista.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "Testios", for: indexPath)
        cell.textLabel?.text = lista[indexPath.row]
        return cell
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        popolalista()
        let timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(printTime), userInfo: nil, repeats: true)
        timer.fire()
    }

    func printTime()
    {
        var test = ""
        dateFormatter.dateFormat = "dd/MM/yyyy"
        let startTime = Date()
        let endTime = dateFormatter.date(from: data)
        let timeDifference = userCalendar.dateComponents(requestedComponent, from: startTime, to: endTime!)

        let dateLabelOutlet = "\(timeDifference.year!) Anni \(timeDifference.month!) Mesi \(timeDifference.day!) Giorni \(timeDifference.hour!) Ore \(timeDifference.minute!) Minuti \(timeDifference.second!) Secondi"

            if timeDifference.second! < 0 {

            test = "Servizio scaduto"
        }
            else {
                test = dateLabelOutlet
        }

        lista.append(test)
}

    func popolalista() {

    }
}

0 个答案:

没有答案