Метод DateFormatter date (from: String) возвращает nil для определенных дат на определенных языках в Swift

Я действительно не понимаю, что происходит с этим кодом, я пытаюсь преобразовать строку на сегодняшний день. Я не понимаю, что преобразование работает для большинства дат, но не работает специально только для двух дат.

let dateFormatter = NSDateFormatter()
dateFormatter.locale = NSLocale(localeIdentifier: "es")
dateFormatter.dateFormat = "dd 'de' MMMM"

dateFormatter.dateFromString("1 de octubre")
dateFormatter.dateFromString("2 de octubre")
dateFormatter.dateFromString("3 de octubre")
dateFormatter.dateFromString("4 de octubre")
dateFormatter.dateFromString("5 de octubre")
dateFormatter.dateFromString("6 de octubre")
dateFormatter.dateFromString("7 de octubre")
dateFormatter.dateFromString("8 de octubre")
dateFormatter.dateFromString("9 de octubre")
dateFormatter.dateFromString("10 de octubre")
dateFormatter.dateFromString("11 de octubre")
dateFormatter.dateFromString("12 de octubre")
dateFormatter.dateFromString("13 de octubre")
dateFormatter.dateFromString("14 de octubre")
dateFormatter.dateFromString("15 de octubre")
dateFormatter.dateFromString("16 de octubre")
dateFormatter.dateFromString("17 de octubre")
dateFormatter.dateFromString("18 de octubre")
dateFormatter.dateFromString("19 de octubre")
dateFormatter.dateFromString("20 de octubre")
dateFormatter.dateFromString("21 de octubre")
dateFormatter.dateFromString("22 de octubre")
dateFormatter.dateFromString("23 de octubre")
dateFormatter.dateFromString("24 de octubre")
dateFormatter.dateFromString("25 de octubre")
dateFormatter.dateFromString("26 de octubre")
dateFormatter.dateFromString("27 de octubre")
dateFormatter.dateFromString("28 de octubre")
dateFormatter.dateFromString("29 de octubre")
dateFormatter.dateFromString("30 de octubre")

Я сделал этот код, чтобы попробовать в Playground, но он воспроизводит некоторые даты, которые я получаю в своем производственном коде. Взгляните на результат, который производит этот код:

Выход игровой площадки

Как вы можете видеть на изображении, он не работает 8 и 15 октября. Работает для всех остальных. Я также пробовал август и сентябрь, и в эти месяцы работали все дни. Я также пытался поставить даты на португальском языке в pt-br локали, а также не работает 8 и 15 октября. Объясняется ли это?


Обновление: код @zneak производит для меня следующий вывод:

output

Другими словами, остановился 8 октября.

Ответы

Ответ 1

Вам просто нужно установить свойство календаря форматера даты:

Xcode 8.2.1 • Swift 3.0.2

let dateFormatter = DateFormatter()
dateFormatter.calendar = Calendar(identifier: .iso8601)
dateFormatter.locale = Locale(identifier: "es")
dateFormatter.dateFormat = "dd 'de' MMMM"
dateFormatter.date(from: "8 de octubre")   // "Oct 8, 2000, 1:00 AM"