2009-06-18 7 views
3

私はコードでは、そのような「18 6月9日」などの文字列を取得するにはNSDateを使用しています:ココア - NSDateからローカライズされた文字列、NSCalendarDate

NSDate *theDate = [NSDate date]; 
NSString *dateString = [theDate descriptionWithCalendarFormat:@"%d %b %y" 
     timeZone:nil 
     locale: nil]; 

これは動作しますが、英語のみの出力になります。出力をユーザーのデフォルト言語でローカライズする必要があります。

Cocoa(この場合はMac OS X 10.4,10.5)はこのローカリゼーションの機能を提供していますか、毎月の手作業でローカライズする必要がありますか?&月名は自分自身ですか?

(。私はロケールを提供してきたが、それは、日付のロケール固有の順序を提供していますが、日・月名のいずれかのローカライズを行うには表示されません)

答えて

22

ここではsnippet from Appleです:

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 

[dateFormatter setDateStyle:NSDateFormatterMediumStyle]; 

[dateFormatter setTimeStyle:NSDateFormatterNoStyle]; 

NSDate *date = [NSDate dateWithTimeIntervalSinceReferenceDate:118800]; 

NSString *formattedDateString = [dateFormatter stringFromDate:date]; 

NSLog(@"formattedDateString for locale %@: %@", [[dateFormatter locale] localeIdentifier], formattedDateString); 
+0

感謝を。残念ながら、スニペットは正しく動作するようには見えません。 'date'を[NSDate date]に変更すると、使用するNSDateFormatterXXXStyleに関係なく、次の結果が得られます。 en_AU:06/19/09 国際システム環境設定 - >フォーマットでは、オーストラリア。しかし!私の日付の好みは本当にdd/mm/yyです。コードはオーストラリア非友好的なmm/dd/yy形式で出力されています。 – SirRatty

+1

Argh。コメントに改行はありませんか? – SirRatty

+1

Appleのドキュメントによると、NSDateFormatterMediumStyleは06/19/09の代わりに "Jun 19、2009"のようなものを出力しなければなりません。 – SirRatty

3

コードの1行が欠落している表示されます。助けを

[dateFormatter setLocale:usLocale]; 
関連する問題