ios macos swift nsdate nsdateformatter

ios - La fecha del método DateFormatter(de: String) devuelve nulo para fechas específicas en idiomas específicos en Swift



macos nsdate (1)

Realmente no entiendo lo que está sucediendo con este código, estoy tratando de convertir una cadena a la fecha. Lo que no entiendo es que la conversión funciona para la mayoría de las fechas, pero no funciona especialmente para solo 2 fechas.

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")

Hice este código para probarlo en Playground, pero reproduce algunas fechas que obtengo en mi código de producción. Echa un vistazo a la salida que produce este código:

Como puede ver en la imagen, no funciona para el 8 y 15 de octubre. Funciona para todos los demás. También probé agosto y septiembre, y en esos meses todos los días trabajaban. También intenté poner las fechas en portugués en pt-br locale, y tampoco funciona para el 8 y 15 de octubre. ¿Es explicable?

Actualización: el código @zneak produce el siguiente resultado para mí:

En otras palabras, dejó de funcionar el 8 de octubre.


Solo necesita establecer su propiedad de calendario de formateador de fecha:

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"