問題が何であるかはわかりませんが、「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の量は異なります。
2行目のsetLocale
に問題があることが判明しました。 locale
が手動で設定されている場合、システムはデフォルトで英語の月名を使用しないと思いますか?私は英語を話すlocale
に住んでいますが、おそらく問題ではありません。
いずれにせよ、ロケールを設定しないと、月の名前の問題が修正されます。
dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setTimeZone:[NSTimeZone localTimeZone]];
[dateFormat setDateFormat:@"MMMM dd, h:mm a"];
問題は、フォーマットではなくロケールです。これをチェックしてください:
http://waracle.net/mobile/iphone-nsdateformatter-date-formatting-table/
基本的に、「MMMM」は月のフルネームを提供します。
-systemLocale
は、ここで望むものではありません。他のロケールが適合しない場合、代替ロケールを返します。 -currentLocale
を使用して、ユーザーの現在のロケールを取得します。
また:
正しい日付形式を取得するには、NSDateFormatter
の+dateFormatFromTemplate:options:locale:
メソッドを使用する必要があります。一部の言語では、日は月の前などになり、その逆もあります。