将字符串转换为日期对象时遇到问题

时间:2019-07-01 19:00:32

标签: swift

我有一个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)

}

1 个答案:

答案 0 :(得分:0)

也许您使用的是错误的dateFormat。从here

检查您的dateFormat

例如,如果您的dateString为“ Mar 1,2019”,则必须将其用作dateFormat“ MMM d,yyyy”

dateFormatter.dateFormat = "MMM d, yyyy"