UIDatePicker 无法识别它当前显示的是当前日期

UIDatePicker doesn't recognise that it currently shows the current date

我的 swift 应用程序使用 UIDatePicker 供用户 select 约会。但是,我想对其进行设置,以便在用户忘记插入时显示 "No date inserted"。

问题是,当我设置 if 语句根据 datePicker 的日期是否等于当前日期显示警告时,它根本无法识别它。这是我的代码:

if datePicker.date == NSDate() {
    warnL.text = "NO DATE INSERTED"
}

我该怎么办? 任何帮助将不胜感激!谢谢。

NSDate return 所有日期,包括时间,因此它永远不会等于您 datePicker 中的时间。 您可以定义变量来告诉您日期是否已更改:

var dateWasChanged = false

然后您可以为更改事件注册处理程序:

func viewDidLoad() {
   datePicker.addTarget(self, action: #selector(YourViewController.handleDatePicker), forControlEvents: UIControlEvents.ValueChanged)
}

func handleDatePicker() {
    dateWasChanged = true
}

之后您可以检查 dateWasChanged 是否为 true 并显示您的信息。

有一种更简单的方法可以知道日期是否是今天,即使用 NSCalendar:

上的方法
if NSCalendar.currentCalendar().isDateInToday(datePicker.date) {
    warnL.text = "NO DATE INSERTED"
}

它负责处理时区、区域设置和日历类型。