2015-09-05 10 views
14

このコードで何が起こっているのか実際にはわかりませんが、現在の文字列に変換しようとしています。私が理解していないことは、ほとんどの日付でコンバージョンが機能しますが、2つの日付だけは特別に機能しません。NSDateFormatter.dateFromStringは、特定の言語の特定の日付のnilを返します

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

私が遊び場で試して、このコードを作ったが、それは私が私の生産コードで取得していますいくつかの日付を再生します。このコードが生成する出力で見てみましょう:あなたが画像で見ることができるように、それはすべての他人のために10月8日と15作品のために動作しません

Playground output

。私も8月と9月を試みました。私もpt-brロケールでポルトガル語で日付を入れようとしましたが、10月8日と15日は動作しません。


更新:@zneakコードは私のために次の出力を生成します。つまり

output

は、スウィフト3.0•

+0

私は、[このプログラム](httpであなたの問題を再現することはできません://pastebin.com/x4nyXc1M)。 – zneak

+0

デバッガを信頼しています。デバッガを信頼しないでください。結果を変数に代入してログに記録する。 –

+0

@zneak、あなたのコードは私のために同じエラーを生成します。 –

答えて

4

のXcode 8.2.1を10月8日の実行を停止しました。 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" 

スウィフト2.xの

あなたは自分の日付フォーマッタカレンダープロパティを設定する必要があります。

let dateFormatter = NSDateFormatter() 

// add a calendar 
dateFormatter.calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierISO8601) 

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

enter image description here

+0

私にとって、カレンダーを設定することなく機能しました。設定せずに問題を再現できますか? – zneak

+0

はいカレンダーを設定しないと、nilを返します。それはあなたの場所に依存します –

+0

私は[そこにあるすべてのカレンダーに日付フォーマッターを設定しました](http://pastebin.com/yWs6nCWA)と、フォーマッタが日付を解析できないものは、中国語、ヘブライ語、イスラム、イスラム民間人、ペルシャ人、インド人。彼らは1ヶ月に2つの日付だけでなく、全面的に失敗します。あなたの最初のカレンダーの識別子は何ですか? – zneak

関連する問題