9

ロケールとタイムゾーンを設定しましたが、日付をフォーマットすると、常に無効な日付が表示されます。月は常に12月で、年は指定された年より1つ少なくなります。私の場合、日コンポーネントは必要ありません。

他の同様の投稿を確認しましたが、問題は解決しませんでした。

どんな助けでも大歓迎です。ありがとうございました。

コードは次のとおりです。

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
dateFormatter.locale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease]; 
dateFormatter.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"]; 
[dateFormatter setDateFormat:@"MMM YYYY"];
NSDate *formattedDate = [dateFormatter dateFromString:@"Sep 2013"];
NSLog(@"Date: %@", [dateFormatter stringFromDate:formattedDate]);
[dateFormatter release]; dateFormatter = nil;

出力:日付:2012年12月

4

2 に答える 2

16

「YYYY」形式は、「年の週」ベースのカレンダーに使用されます。代わりに「yyyy」形式指定子を使用します。

[dateFormatter setDateFormat:@"MMM yyyy"];
于 2012-04-10T06:58:46.187 に答える
0

ウラジミールのすばらしい答えに何かを追加したかっただけです。ロケールを設定する前にこれを行うと、日付のフォーマットがおかしくなってしまいます。私がしなければならなかったのは、新しい形式を設定する前にロケールを設定し、使用するsetDateFormatロケールに基づいて形式を変更するために使用することでした。

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setLocale:[NSLocale currentLocale]];//I wanted to set the locale to wherever user is using my app in
[formatter setDateFormat:@"MMM YYYY"];
NSDate *now = [NSDate Date];
NSString *fancyLookingDate = [formatter stringFromDate:now];
于 2015-11-04T23:47:49.240 に答える