2013-10-24 8 views
5

NSDatesに変換する必要があるいくつかの日付文字列があります。 マイ解析コードは以下の通りです:ハードウェア依存のNSDateFormatter dateFromString:バグ(返り値なし)

NSString *s = [pair objectForKey:@"nodeContent"]; 
NSDateFormatter *f = [[NSDateFormatter alloc] init]; 
[f setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZ"]; 
self.date = [f dateFromString:s]; 

上記のコードは、我々がテストしたすべてのデバイスとシミュレータで正常に動作します。 奇妙なことに、iOS 6.1または7.0.xを実行しているiPhone 5で上記のコードを実行すると、self.date = [f dateFromString:s];の行は毎回nilを返します。

私はチェックし、文字列sが存在し、日付を正しく解析するデバイスと並んで比較したときに同じ文字が含まれています。

これは、例えば、日付文字列です: `2013-10-31T21:50:00-06:00'

は、私はここで何かが足りないのですか?

+0

* * *を数値化します。ロケールの問題かもしれませんか? –

+0

[NSDateFormatterロケールを処理する最善の方法は何ですか?] "の重複が可能ですか?](http://stackoverflow.com/questions/6613110/what-is-the-best-way-to-deal-with- the-nsdateformatter-locale-feature) –

答えて

12

日付フォーマッタのロケールを特別なen_US_POSIXロケールに設定していないためです。あなたのiPhone 5は、24時間設定の設定が異なる可能性があります。

固定形式の文字列を解析するたびに特別なロケールを設定する必要があります。

+3

ありがとうございます。私は '[f setLocale:[NSLocale localeWithLocaleIdentifier:@" en_US_POSIX "]];という行を追加しました。 – user2917941

関連する問題