我有一个DatePicker视图,当用户单击UITextField时,它显示DatePicker,用户当然可以选择一个日期。 问题是,当我尝试将String转换为日期对象时,我什么也没得到,因此我无法比较两个日期。
func checkDate(){
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: Locale.current.identifier)
dateFormatter.timeZone = .current
dateFormatter.dateFormat = "dd/MM/yy"
guard let startDate = mView.startDateTextField.text else { return }
print("DATE: \(startDate)")
guard let startDateFromString = dateFormatter.date(from: startDate) else { return } //I think it returns here.
//Won't get here.
print("DATE: \(startDate)")
guard let endDate = mView.endDateTextField.text else { return }
guard let endDateFromString = dateFormatter.date(from: endDate) else { return }
if startDateFromString.compare(endDateFromString) == ComparisonResult.orderedDescending{
print("Start date cannot be greater than end date.")
}
}
我尝试调试,但断点确实到达了startDateFromString行,但是从外面跳了起来,所以我想它不会从字符串中获取Date并返回。
我只是不知道为什么。
编辑:这是我将TextField文本设置为从DatePicker中选择的日期的地方。
@objc func datePickerValueChanged(sender: UIDatePicker){
let dateFormatter = DateFormatter()
dateFormatter.dateStyle = .medium
dateTextField.text = dateFormatter.string(from: sender.date)
}
答案 0 :(得分:0)
也许您使用的是错误的dateFormat。从here
检查您的dateFormat例如,如果您的dateString为“ Mar 1,2019”,则必须将其用作dateFormat“ MMM d,yyyy”
dateFormatter.dateFormat = "MMM d, yyyy"