Поскольку ваша дата 1996-11-24T09:02:32Z
и вы используете формат dd-MM-yyyy
, который не совпадает. поэтому вам нужно заменить dd-MM-yyyy
на yyyy-MM-dd'T'HH:mm:ssZ
, и он будет работать нормально.
И ваш результат будет:
let dateStr = "1996-11-24T09:02:32Z"
func toDate(str: String) -> Date? {
let dateForm = DateFormatter()
dateForm.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
dateForm.locale = Locale(identifier: "en_US_POSIX")
let date = dateForm.date(from: str)
return date
}
print(toDate(str: dateStr)) // "Optional(1996-11-24 09:02:32 +0000)\n"
Или вы можете использовать короткий путь, как предложил Дан:
func toDate(str: String) -> Date? {
return ISO8601DateFormatter().date(from: str)
}
print(toDate(str: dateStr)) // "Optional(1996-11-24 09:02:32 +0000)\n"
Или, если вы предпочитаете Extension
extension Formatter {
static let iso8601 = ISO8601DateFormatter()
}
let dateStr = "1996-11-24T09:02:32Z"
Formatter.iso8601.date(from: dateStr) // "Nov 24, 1996 at 2:32 PM"