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 件のコメント:
コメントを投稿