NSDateFormatter.dateFromString返回特定语言的特定date为零

我真的不知道这个代码发生了什么,我试图将string转换为date。 我不明白的是,转换适用于大多数date,但不能专门为两个date。

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中尝试,但它重现了我在生产代码中得到的一些date。 看看这个代码产生的输出:

游乐场输出

正如你可以在图像中看到,它不适用于10月8日和15日。所有其他工作。 我也尝试了八月和九月,在那几个月里,所有的日子都在工作。 我也试着用pt-br语言设置葡萄牙语的date,而且在10月8日和15日也不行。是否可以解释?


更新:@zneak代码为我生成以下输出:

产量

换句话说,10月8日停止运行。

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" 

Swift 2.x

你只需要设置你的date格式化程序日历属性:

 let dateFormatter = NSDateFormatter() // add a calendar dateFormatter.calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierISO8601) dateFormatter.locale = NSLocale(localeIdentifier: "es") dateFormatter.dateFormat = "dd 'de' MMMM" 

在这里输入图像说明