Search code examples
iosswiftdateformatter

DateFormatter Returning with Valid String


My date from a string is always nil and I can't figure out why.

func getBirthdate() -> Date? {
        let formatter = DateFormatter()
        formatter.dateFormat = "MM/dd/yyyy"
        formatter.dateStyle = .medium
        formatter.timeStyle = .none
        print(self.dob!)
        let birthdate = formatter.date(from: self.dob!)
        return birthdate
    }

self.dob:

05/01/1984

Solution

  • You should either set .dateFormat or .dateStyle/.timeStyle. They are mutually exclusive, when you set .dateStyle you reset .dateFormat to one of preset date formats.

    So, it should be:

    func getBirthdate() -> Date? {
        let formatter = DateFormatter() // Also, you should move initialisation out and reuse `DateFormatter`
        formatter.dateFormat = "MM/dd/yyyy"
        print(self.dob!)
        let birthdate = formatter.date(from: self.dob!)
        return birthdate
    }