2010年5月6日木曜日

日時の書式付き出力

日時(NSDate)はNSStringクラスの書式指定(stringWithFormat)を使って出力することもできますが、曜日や元号等を出力するときにちょっと工夫が必要です。
また、NSDateは以前書いた通り世界で一意の値であるグレゴリオ暦(世界標準時)を格納するので、NSStringで表示する際はローカル時刻に変換 する必要があります。

そこで、NSDateFormatterクラスを使えば、より簡単に書式指定を行うことができます。


    // 現在日時を取得
    NSDate* dt = [NSDate date];

    // NSDateFormatterのインスタンス生成
    NSDateFormatter* form = [[NSDateFormatter alloc] init];
   
    // NSDateFormatterに書式指定を行う
    [form setDateFormat:@"G yyyy/MM/dd(EEE) K:mm:ss"];
   
    // 書式指定に従って文字出力
    NSString* str = [form stringFromDate:dt];
   
    NSLog(str);
   
    // NSDateFormatterはallocで確保したので明示的に解放する
    [form release];

strには”AD 2010/05/06(Thu) 10:07:50”と格納されます。ちゃんと曜日も取得できてますね。
書式指定できるものには、以下のようなものがあります。

G時代(AD等)
yy年の下2桁
yyyy年(4桁)
MM月(1〜12)
MMM月(Jan)
MMMM月(Janualy)
dd日(2桁)
d日(1〜2桁)
EEE曜日(Sun等)
EEEE曜日(Sunday等)
aaAM/PM
H時(0〜23)
K時(0〜11)
m分(1〜2桁)
mm分(2桁)
s秒(1〜2桁)
ss秒(2桁)
Sミリ秒

0 件のコメント:

コメントを投稿