iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 8
0

今天要結合timer以及時間的倒數,主要是給優惠券一個期限,並且取得時間做比較,若優惠券的期限還未到,就可以兌換這張優惠券; 反之,則優惠券過期無法兌換。

練習過程中一開始因為立刻就將取得的本地時間做轉換(String),導致後面一直在轉換GMT時間以及本地時間(String)。屆於時間差都是一致的,後來決定在優惠券期限以及系統時間都先採用GMT時間,在最後顯示上再轉成本地時間(GMT +8)。此外因為沒有去觀察優惠券在剩餘一分鐘的時候是顯示多少小時,這裡直接多增加分鐘。

        //取得時間
        let date = Date()
        
        //給予expired day(Date格式)
        let expiredDate = "2017/12/28 17:00" //GMT Time Zone
        let formatter = DateFormatter()
        formatter.dateFormat = "yyyy/M/d HH:mm"
        let expiredDateFromString = formatter.date(from: expiredDate)
        print(expiredDateFromString!)
        
        if expiredDateFromString! > date {
            
            let calendar = Calendar.current
            //取得時間差
            let components = calendar.dateComponents([.minute], from: date, to: expiredDateFromString!)
            //將時間轉換成local time
            let expiredCalendar = calendar.dateComponents(in: .current, from: expiredDateFromString!)
               
            myCountDownLabel.text = "期限:\(expiredCalendar.year!) 年 \(expiredCalendar.month!) 月 \(expiredCalendar.day!) 日    尚餘:\(components.minute! / 1440) 天 \((components.minute! % 1440) / 60) 時 \(components.minute! % 60) 分"
}

接下來是過期優惠券的部分

else {
            let calendar = Calendar.current
            let expiredCalendar = calendar.dateComponents(in: .current, from: expiredDateFromString!)
            myCountDownLabel.text = "期限:\(expiredCalendar.year!) 年 \(expiredCalendar.month!) 月 \(expiredCalendar.day!) 日    尚餘:0 天 0 時 0 分"
            myButtonLabel.setTitle("已 截 止", for: .normal)
            //stop timer while expiredDateFromString! < date
            timer.invalidate()
}

https://ithelp.ithome.com.tw/upload/images/20171227/20107699RgvmVa0CAF.png

https://ithelp.ithome.com.tw/upload/images/20171227/20107699Q0n1nCyHVr.png


上一篇
Day 7 - 麥當勞報報 Timer 設定
下一篇
Day 9 - Jetstar 版型檢視
系列文
Swift 新手上路之30天復刻版型30

尚未有邦友留言

立即登入留言