美文网首页Swift编程iOS Developer
Swift 3.0(天,时,分,秒)倒计时秒杀物品(使用2个时间

Swift 3.0(天,时,分,秒)倒计时秒杀物品(使用2个时间

作者: Double丶K | 来源:发表于2017-05-23 14:33 被阅读1489次

做电商的会遇到秒杀的活动,然后会有倒计时开始抢购的需求,写了个demo来解决这个需求,超级简单的,思路就是获取了当前的时间,和将来的时间点算出相差的天.时.分.秒,然后使用定时器进行倒计时,计算差的时候使用了Calendar来计算. Calendar的时间格式方法和OC的差距挺大,着实是个坑......

        //随意设置一个将来的时间
        let aaa : String = "2017.05.24 14:11:11"

        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
        //结束时间
        let endDate = dateFormatter.date(from: aaa)
        
        //当前时间
        let currentDate = Date.init()
        
        let calendar = Calendar.current
        let unit:Set<Calendar.Component> = [.day,.hour,.minute,.second]
        let commponent:DateComponents = calendar.dateComponents(unit, from: currentDate, to: endDate!)
        
        print(commponent.day as Any,commponent.hour as Any,commponent.minute as Any,commponent.second as Any)
        secondStr = commponent.second
        minitStr = commponent.minute
        hourStr = commponent.hour
        dayStr = commponent.day
        
        timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(timerAction), userInfo: nil, repeats: true)
        RunLoop.main.add(timer!, forMode: RunLoopMode.commonModes)

定时器的方法:

    func timerAction() {
        secondStr = secondStr! - 1
        
        if secondStr == -1 {
            secondStr = 59
            minitStr = minitStr! - 1
            if minitStr == -1 {
                minitStr = 59
                hourStr = hourStr! - 1
                if hourStr == -1 {
                    hourStr = 23
                    dayStr = dayStr! - 1
                }
            }
        }
        
        if  secondStr == 0 && minitStr! == 0 && hourStr == 0 && dayStr == 0 {
            self.timer?.invalidate()
            timer = nil
        }
        
        print(dayStr as Any,hourStr as Any,minitStr as Any,secondStr as Any)
        
    }

相关文章

网友评论

    本文标题:Swift 3.0(天,时,分,秒)倒计时秒杀物品(使用2个时间

    本文链接:https://www.haomeiwen.com/subject/mszwxxtx.html