匹配datePicker日期和计时器与用户日期和时间(swift3)

时间:2017-07-14 16:55:24

标签: ios swift date if-statement datepicker

我的代码创建了一个日期选择器,并选择日期和时间。我想要做的就是当日期选择器的日期和时间与用户手机的日期和时间相匹配时,打印行" cool"。就是这样。我评论了导致我出问题的那条线。

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 个答案:

答案 0 :(得分:1)

您的主要问题是如何比较两个日期。您应该使用相同的日期格式化程序将两个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而不是hhHH为24小时制,hh为12小时制。仅使用hh,您还使用a(对于上午/下午)。

你的属性应该在课堂内,而不是外面。

在课堂内移动datePicker2

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

dateFormatter也应该在课堂内移动。