月の文字列を取得する

しまった……。 昨日は同窓会とかの兼ね合いで名古屋に帰っていて、
今日徹夜で東京に戻ってきたところです。
普段なら下書きで1日分作っておいてスマートフォンから反映するんですが、失念していました。


さて、表題のことについて。
これも結構良く使う割に、よく忘れるので書いておきます。


このTipsでの目標は、たとえば
「1」という数値があった時に、ある標準関数を通すことで
「1月」または「Janualy」という値を取得することを目的とします。
応用すれば、「Jan」などの略称も取得できた気がします。

int month = 1; // 月を表す数字
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"ja_JP"] autorelease]];

NSArray *monthSymbols = [dateFormatter monthSymbols];
NSLog(@"monthSymbols: %@", [monthSymbols objectAtIndex:month - 1]);

[dateFormatter release];


たとえばこの場合だと、「monthSymbols: 1月」と表示されるはずです。
これの「NSLocale」で指定しているinitWithLocaleIdentifierを「en_US」としてやることで
表示される文字列は「monthSymbols: Janualy」と変わります。
また、取得するNSArrayを「shortMonthSymbols」とすることで「Jan」などの省略名称も
取得することができます。


日付の表現というのはいろいろなところで出てくるので、
覚えておくのも便利です。


別にdateFormatterは1つしか指定してはいけないわけではないので
NSLocaleで「ja_JP」を指定したものと、「en_US」を指定したものを用意しておくと
状況に応じて表現方法も変更できたりします。 要は、使い方次第。