我有开始日期时间和结束日期时间如何在iOS Swift 4中显示结束销售

我有开始日期时间和结束日期时间如何在iOS Swift 4中显示结束销售,ios,timer,swift4,Ios,Timer,Swift4,我有开始日期和结束日期字符串,如何显示结束销售计时器一样的图像 “开始日期”:“2019年12月18日05:15:00+0000”,“结束日期”:“2019年12月27日11:15:39+0000” 请帮忙 您应该首先将日期字符串转换为日期,然后可以使用计时器根据开始日期和结束日期更新计时器标签 使用Calendar和dateComponents方法查找日期之间的日、时、分和秒差异,然后将日、时、分和秒标签上的值设置为与所附图像相同的值 实施示例: var timer:Timer? var en

我有开始日期和结束日期字符串,如何显示结束销售计时器一样的图像

“开始日期”:“2019年12月18日05:15:00+0000”,“结束日期”:“2019年12月27日11:15:39+0000”


请帮忙

您应该首先将日期字符串转换为日期,然后可以使用计时器根据开始日期和结束日期更新计时器标签

使用
Calendar
dateComponents
方法查找日期之间的日、时、分和秒差异,然后将日、时、分和秒标签上的值设置为与所附图像相同的值

实施示例:

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.
}

如果你计算开始日期和结束日期之间的差异,它总是相同的。相反,您可以计算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()
        }

    }
类ViewController:UIViewController{
让我们结束日期:日期?={
//从服务器接收的日期字符串创建日期
让dateFormatter=dateFormatter()
dateFormatter.dateFormat=“mm dd,yyyy HH:mm:ss Z”
//转换为所需时区
返回日期格式化程序。日期(从:“2019年12月18日06:30:39+0000”)
}()
变量计时器:计时器?
私有函数开始倒计时(){
timer=timer.scheduledTimer(时间间隔:1,目标:self,选择器:#选择器(updateTime),userInfo:nil,repeats:true)
}
私有函数停止倒计时(){
计时器?.invalidate()
}
@objc func updateTime(){
guard let endDate=endDate else{
停止倒计时()
返回
}
让倒计时=Calendar.current.dateComponents([.day、.hour、.minute、.second],from:Date(),to:endDate)
让天=倒计时。天!
让小时=倒计时。小时!
让分钟=倒计时。分钟!
让秒=倒计时。秒!

如果您已附加示例图像的天数?您是否将日期作为字符串?您可以发布您迄今为止尝试的代码吗?您需要探索
日历
日期组件
classin以上开始日期、结束日期我从后端获取我需要显示与附加图像类似的计时器签出