web-dev-qa-db-ja.com

NSDateFormatterに完全な月名が表示されず、1桁の数字のみが表示される

問題が何であるかはわかりませんが、「7月」という月の名前を取得する代わりに、「07」を取得します。

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

私はM、MM、MMM、MMMMを試しましたが、それらはすべて、月の名前の代わりに数字を与えますが、先行する0の量は異なります。

27
Chris

2行目のsetLocaleに問題があることが判明しました。 localeが手動で設定されている場合、システムはデフォルトで英語の月名を使用しないと思いますか?私は英語を話すlocaleに住んでいますが、おそらく問題ではありません。

いずれにせよ、ロケールを設定しないと、月の名前の問題が修正されます。

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

問題は、フォーマットではなくロケールです。これをチェックしてください:

http://waracle.net/mobile/iphone-nsdateformatter-date-formatting-table/

基本的に、「MMMM」は月のフルネームを提供します。

12
J2theC

-systemLocaleは、ここで望むものではありません。他のロケールが適合しない場合、代替ロケールを返します。 -currentLocaleを使用して、ユーザーの現在のロケールを取得します。

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

8
Fabian Kreiser