簡體   English   中英

我有開始日期時間和結束日期時間如何在 iOS Swift 4 中顯示結束銷售

[英]I have Start Date Time And End Date Time How To Show End Sale in iOS Swift 4

我有開始日期和結束日期字符串,如何像這張圖片一樣顯示結束銷售計時器?

"開始日期":"2019 年 12 月 18 日 05:15:00 +0000","結束日期":"2019 年 12 月 27 日 11:15:39 +0000"

請幫忙!

您應該先將日期字符串轉換為日期,然后您可以使用計時器根據開始和結束日期更新計時器標簽。

使用CalendardateComponents方法查找日期之間的日、小時、分和秒差異,然后像附加圖像一樣設置日、小時、分和秒標簽上的值。

示例實現:

var timer:Timer?
var endDate:Date?

override func viewWillAppear(_ animated: Bool) {

    super.viewWillAppear(animated)

    startTimer()
}

override func viewWillDisappear(_ animated: Bool) {

    super.viewWillDisappear(animated)

    stopTimer()
}

func startTimer(){

    let endDateStr = "Dec 27, 2019 11:15:39 +0000"

    let dateFormat = "MMM d, yyyy HH:mm:ss Z"
    let dateFormater = DateFormatter()
    dateFormater.dateFormat = dateFormat

    endDate = dateFormater.date(from: endDateStr)
    //stop timer if it's already running
    stopTimer()
    timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(updateSaleTime), userInfo: nil, repeats: true)
}

func stopTimer(){

    if timer != nil{

        timer!.invalidate()
        timer = nil
    }
}

func updateSaleTime(){

    guard let d2 = endDate else {
        stopTimer()//Check if the date-format is correct for end date string.
        return
    }

    let cal = Calendar.current

    let components = cal.dateComponents([.day, .hour, .minute, .second], from: Date(), to: d2)
    let day = components.day!
    let hour = components.hour!
    let minute = components.minute!
    let second = components.second!

    //set the value on day, hour, minute and second labels as like you attached image.
}

如果計算 startDate 和 endDate 之間的差異,它將始終相同。 相反,您可以計算從當前日期到 endDate 的差異。 檢查以下實現。

  class ViewController: UIViewController {

        let endDate : Date? = {
            // To create Date from date string received from server 
            let dateFormatter = DateFormatter()
            dateFormatter.dateFormat = "MMM dd, yyyy HH:mm:ss Z"
            // Convert to desired Timezone
            return dateFormatter.date(from: "Dec 18, 2019 06:30:39 +0000")
        }()

        var timer : Timer?

        private func starCountDown() {
           timer =  Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(updateTime), userInfo: nil, repeats: true)
        }

        private func stopCountDown() {
            timer?.invalidate()
        }

        @objc func updateTime() {

             guard let endDate = endDate else {
                stopCountDown()
                return
            }

            let countdown = Calendar.current.dateComponents([.day, .hour, .minute, .second], from: Date(), to: endDate)
            let days = countdown.day!
            let hours = countdown.hour!
            let minutes = countdown.minute!
            let seconds = countdown.second!

            if days <= 0 && hours <= 0 && minutes <= 0 && seconds <= 0  {
                stopCountDown()
                print("Offer Expired")
                return
            }

            print(String(format: "%02d Days , %02d Hours, %02d Mins, %02d Sec", days, hours, minutes, seconds))
            // set values as per your requirement
        }

        override func viewWillDisappear(_ animated: Bool) {
            super.viewWillAppear(animated)
            stopCountDown()
        }


        override func viewWillAppear(_ animated: Bool) {
            super.viewWillAppear(animated)
           starCountDown()
        }

    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM