Ios 将日期选择器日期和计时器与用户日期和时间匹配(swift3)

Ios 将日期选择器日期和计时器与用户日期和时间匹配(swift3),ios,swift,date,if-statement,datepicker,Ios,Swift,Date,If Statement,Datepicker,下面的代码创建了一个日期选择器,并让它选择日期和时间。我想做的就是当日期选择器的日期和时间与用户手机的日期和时间匹配时,打印行“酷”。就这样。我评论了引起我问题的那句话 import UIKit var dateFormatter : DateFormatter! let datePicker2 = UIDatePicker(); let date = Date() class ViewController: UIViewController { @IBOutlet var da

下面的代码创建了一个日期选择器,并让它选择日期和时间。我想做的就是当日期选择器的日期和时间与用户手机的日期和时间匹配时,打印行“酷”。就这样。我评论了引起我问题的那句话

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")

        }
    }
}

你的首要问题是如何比较这两个日期。您应该使用相同的日期格式化程序将两个
date
实例转换为相同格式的字符串。然后可以比较这两个字符串

@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")
    }
}
您也使用了错误的格式。您需要
“yyyy-MM-dd HH:MM”
<代码>YYYY略有不同。除非您清楚地理解并明确需要使用
yyyy
,否则您总是想要
yyyy
。你想要的时间是
HH
而不是
HH
HH
是24小时,而
HH
是12小时。只有使用
hh
时,您还可以使用
a
(用于AM/PM)

属性应该在类内部,而不是外部

在类内移动
datePicker2

根据我的回答,
date
现在已过时,因此您可以将其完全删除


dateFormatter
也应该在类内移动。

为什么
datePicker2
date
声明在类外而不是类内?并且日期格式应该是
“yyyy-MM-dd HH:MM”
@rmaddy不知道datePicker2和date应该在类中。如果将datePicker2和date移动到当前时间,则此操作有效。但是,如果将日期选择器设置为时间,然后当当前时间与日期选择器匹配时,则不会发生任何事情。我正试图发出警报,所以我想设置日期选择器,并让它在与当前日期和时间匹配时打印一些内容。这是一个完全独立的功能,需要一个全新的问题。您在上面提出的问题是,当用户将选择器更改为当前时间时,如何打印“cool”。这个问题已经得到了回答。如果您对设置报警和知道当前日期/时间何时与用户先前选择的日期/时间匹配还有一个完整的其他问题,您应该发布一个新问题,其中包含有关该问题的所有相关详细信息。