2012-08-24 16 views
22

月の名前が「7月」になるのではなく、「07」になります。NSDateFormatterに完全な月名が表示されず、1桁の数字のみが表示されます

dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setLocale:[NSLocale systemLocale]]; 
[dateFormat setTimeZone:[NSTimeZone localTimeZone]];  
[dateFormat setDateFormat:@"MMMM dd, h:mm a"]; 

私はM、MM、MMM、MMMMを試してみました、そしてそれらのすべてが一流0の量が異なるものの、代わりに月の名前の、私の番号を与えます。

+0

私はこの行が問題だと思う.. [dateFormat setLocale:[NSLocale systemLocale]]; 'systemLocale'を使う目的が何であるか分かりませんが、' systemLocale'の代わりに 'currentLocale'を試すことができます – ila

答えて

45

2行目の問題の原因は、setLocaleです。 localeが手動で設定されている場合、英語の月名を使用するようにシステムがデフォルト設定されていないとしますか?私は英語を話すlocaleに住んでいますが、それは問題ではないかもしれません。

いずれの場合も、ロケールを設定しないと月名の問題が修正されます。

dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setTimeZone:[NSTimeZone localTimeZone]];  
[dateFormat setDateFormat:@"MMMM dd, h:mm a"]; 
7

-systemLocaleここで必要なものはありません。他のロケールが適合しない場合、フォールバックロケールを返します。ユーザーの現在のロケールを取得するには、-currentLocaleを使用します。


正しい日付形式を取得するには、NSDateFormatter+dateFormatFromTemplate:options:locale:メソッドを使用する必要があります。いくつかの言語では、その日がその月の前に来るなど、その逆もあります。

関連する問題