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"