match datePicker date and timer with users Date and Time (swift3)

落爺英雄遲暮 提交于 2019-12-14 03:04:50

问题


My code below creates a date picker and has it select a date and time. All I want to do is when the date picker's date and time match the user's phone's date and time is to print the line "cool". That's it. I commented the line that is causing me problems.

import UIKit

var dateFormatter : DateFormatter!

let datePicker2 = UIDatePicker();
let date = Date()

class ViewController: UIViewController {

    @IBOutlet var dateLabel: UILabel!
    override func viewDidLoad() {
        super.viewDidLoad()

        let datePicker : UIDatePicker = UIDatePicker(frame: CGRect(x: 0,y: 330,width: self.view.frame.size.width,height: 220))
        datePicker.datePickerMode = UIDatePickerMode.dateAndTime
        self.view.addSubview(datePicker)

        datePicker.addTarget(self, action: #selector(ViewController.change(_:)), for: UIControlEvents.valueChanged)

        dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "YYYY-MM-dd hh:mm"
    }

    @IBAction func change(_ sender : UIDatePicker)
    {
        dateLabel.text = dateFormatter.string(from: sender.date)
        ///print cool line; what I have does not work
        if dateLabel.text == String(describing: date){
            print("cool")

        }
    }
}

回答1:


Your primary issue is how you compare the two dates. You should be using the same date formatter to convert both Date instances to strings in the same format. Then you can compare the two strings.

@IBAction func change(_ sender : UIDatePicker)
{
    let pickerString = dateFormatter.string(from: sender.date)
    let nowString = dateFormatter.string(from: Date())

    dateLabel.text = pickerString
    if pickerString == nowString {
        print("cool")
    }
}

You are also using the wrong format. You need "yyyy-MM-dd HH:mm". YYYY is slightly different. You always want yyyy unless you have a clearly understood and specific need to use YYYY. And for the hour you want HH instead of hh. HH is a 24-hour hour while hh is a 12-hour hour. Only use hh is you also use a (for AM/PM).

And your properties should be inside the class, not outside.

Move datePicker2 inside the class.

date is now obsolete based on my answer so you can remove it completely.

dateFormatter should also be moved inside the class.



来源:https://stackoverflow.com/questions/45108131/match-datepicker-date-and-timer-with-users-date-and-time-swift3

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!