1

以下のコードを使用しています。

NSString * weekdayString = [[self date] descriptionWithLocale:@"%A"];
NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setLocale:usLocale];
[dateFormatter setDateStyle:NSDateFormatterShortStyle];
dateString = [NSString stringWithFormat:@"%@,%@",weekdayString,[dateFormatter stringFromDate:[self date]]];
NSArray * components = [dateString componentsSeparatedByString:@","];
dateString = [NSString stringWithFormat:@"%@,%@",[components objectAtIndex:0],[components objectAtIndex:1]];

シミュレータと ios 6.0 では正常に動作していますが、デバイス (iPad) の ios 5.1 では期待どおりに表示されません。

4

1 に答える 1

2

NSDate -descriptionWithLocaleを取ることが文書化されていNSLocaleます; を渡しているNSStringため、文書化されていない動作に依存しています。

また、コンポーネントへの分割で何を達成しようとしているのかも不明です。おそらく、NSDateFormatterShortStyle には常にコンマが含まれていると想定しているのではないでしょうか? それはまた、ドキュメントによって保証されていません。

おそらくやりたいことは、カスタムの日付形式文字列を設定することです。あなたの投稿のタイトルから、あなたがおそらく望んでいるように見えますEEEE, MMMM dd。だから例えば

// see QA1480 re: en_US_POSIX
NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setLocale:usLocale];
[dateFormatter setDateFormat:@"EEEE, MMMM dd"];
dateString = [dateFormatter stringFromDate:[self date]];

QA1480NSDateFormatterは、サイレントに日付フォーマッタを内部的に適応させる可能性がある問題に対処します。

于 2013-02-05T07:43:34.083 に答える