倒數計時

UIDatePicker
Locale
DateFormatter( )
Timer( )
timeIntervalSinceNow
scheduledTimer
Date( ) 轉 String ( )
餘數%

還沒辦法完成 倒數計時的秒數 隨著 當下的秒數 去做變動

@IBOutlet weak var datePicker: UIDatePicker!@IBOutlet weak var endTimeLabel: UILabel!@IBOutlet weak var intervalTimeLabel: UILabel!@IBOutlet weak var nowTimeLabel: UILabel!let dateFormatter = DateFormatter()var timer = Timer()
override func viewDidLoad() {super.viewDidLoad()//調整datePicker的語言datePicker.locale = Locale(identifier: "zh-TW")//調整日期格式//dateFormatter.dateFormat = "yyyy/MM/dd HH:mm:ss"dateFormatter.dateFormat = "yyyy年MM月dd日"//將datePicker的存取值 型別Date 轉成 String ,並於Label顯示endTimeLabel.text = dateFormatter.string(from: datePicker.date)//為了不讓倒數時間為負的,datePicker - 現在時間(一直在變大) 不能是小減大,故要把datePicker的最小值date同步現在時間datePicker.minimumDate = Date()
/*計時計的預定排程指令withTimeInterval 每隔幾秒執行repeats 是否重複block 執行區塊內容 通常為self.*/timer = Timer.scheduledTimer(withTimeInterval: 1, repeats: true, block: { (Timer) inself.timeIntervalCalculate()})nowTimeLabel.text = dateFormatter.string(from: Date())
func timeIntervalCalculate() {//為了不讓倒數時間為負的,datePicker - 現在時間(一直在變大) 不能是小減大,故要把datePicker的最小值date同步現在時間datePicker.minimumDate = Date()/*型別Date內指令timeIntervalSinceNow 為 datePicker.date扣掉 現在日期 的 總間隔秒數生成整數型別Int,是為了要用 餘除 % ,%為除以多少後的剩餘*/let interval = Int(datePicker.date.timeIntervalSinceNow)// 總秒數 除以 60 60 24後的天數let day = interval/60/60/24/*//總秒數 除以 60 60 24後 剩餘的小時數let hour = interval/60/60 % 24// 總秒數 除以 60 60後 剩餘的分鐘數let min = interval/60 % 60// 總秒數 除以 60後 剩的秒數let sec = interval % 60intervalTimeLabel.text = "\(day)天\(hour)時\(min)分\(sec)秒"*/print(interval)if interval <= 86400 {intervalTimeLabel.text = "剩下不到1天啦~"}else{intervalTimeLabel.text = "剩下\(day)天"}}
@IBAction func datePickerChange(_ sender: Any) {endTimeLabel.text = dateFormatter.string(from: datePicker.date)}

--

--