我的代码创建了一个日期选择器,并选择日期和时间。我想要做的就是当日期选择器的日期和时间与用户手机的日期和时间相匹配时,打印行" 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")
}
}
}
答案 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
而不是hh
。 HH
为24小时制,hh
为12小时制。仅使用hh
,您还使用a
(对于上午/下午)。
你的属性应该在课堂内,而不是外面。
在课堂内移动datePicker2
。
date
现已根据我的回答过时,因此您可以完全删除它。
dateFormatter
也应该在课堂内移动。