2010年5月6日木曜日

NSDateとNSDateComponentsの相互変換

NSDateとNSDateComponentsの相互変換は、以前にも書いたNSCalendarクラスを使って行います。
NSDate→NSDateComponents変換はNSCalendarクラスのcomponentsメソッド。
NSDateComponents→NSDate変換はdateFromComponentsメソッドを使います。

    // NSDateComponentsのインスタンス生成
    NSDateComponents* cmp = [[NSDateComponents alloc] init];
   
    // NSDateComponentsに日付を設定
    [cmp setYear:2010];
    [cmp setMonth:05];
    [cmp setDay:01];
   
    // NSCalendarのインスタンス生成
    NSCalendar* cal = [NSCalendar currentCalendar];
   
    // NSCalendarを使ってNSDateComponentsをNSDateに変換
    NSDate* dt = [cal dateFromComponents:cmp];
    NSLog(@"%@", dt);
   
    // 取得したい情報をカレンダーのフラグに指定
    NSUInteger flg = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit
    | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit | NSWeekdayCalendarUnit;

    // NSDate→NSDateComponents変換
    NSDateComponents* cmp = [cal components:flg fromDate:dt];
    NSString* dbgStr = [NSString stringWithFormat:@"%4d/%2d/%2d(%d)", [cmp year], [cmp month], [cmp day], [cmp weekday]];
    NSLog(@"%s", dbgStr);

    // allocで確保したものはreleaseで解放する
    [cmp release];


0 件のコメント:

コメントを投稿