2012-01-15 12 views
1

次のコードは、リージョンフォーマットを米国に設定した場合にのみ、なぜ機能するのかわかりません。ローカライゼーションと日付

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss zzz"]; 
NSDate *date = [dateFormatter dateFromString:currentFeedPubDate]; 
NSLog(@"%@", date); 

それ以外の場合は "(null)"を返します。

誰でも私がなぜそれを見つけるのを助けることができますか?

答えて

2

Krizzが既に述べたように、ローカライズされた名前は一致しないという問題があります。たとえば、Sun, 15 Jan 2012 22:52:00 GMT+1のような日付を入力し、その電話機が現在ドイツ語に設定されている場合は、Sunと認識されません。ドイツ語の曜日名の省略形が検索されますが、検索されません。入力文字列を書式ロケール

あなたが知っている場合は、あなたができること(とする必要がある)このようなあなたの日付フォーマッタにロケールを強制します。また

[dateFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease]]; 
+0

あなたの説明に感謝します。それは以前私が理解できなかったことです。 –

2

currentFeedPubDateとは何ですか?おそらくSun, 15 Jun 2012 22:31:30 GMT+1のようなものでしょうか?

は今、米国のロケールでMMMは(英語1月から)Janのようなものになりますが、ポーランド語ロケールで、それはStyされることに注意してくださいと一致しませんので、あなたの文字列(ポーランドStyczeń、1月の名前から)。

+0

ほとんどの場合、平日の名前につまずいている可能性があります。 – DarkDust

0

、あなたがあれば発生する可能性があるという問題点があります誰かが自分の携帯電話の設定で12/24設定を切り替えます。この問題はthis threadで議論されています。

+0

なぜユーザーは彼らが望むことをやり遂げることができるのか...情報をありがとう、私はそれを見てみましょう。 –

+0

ええ、私は良いユーザーが何であるかを決して分かったことはありません。彼らは問題を引き起こすようです。 –

関連する問題