年月日だけ今日にする
2012/05/04
NSCalendar
NSDate
NSDateComponents
objective-c
日付処理
Objective-Cです。日付処理です。いまいち要領得てないです。
uidatepickerを設定するときに今日の日付だけにして時と分は画面のままにしたいなーと思ったのですが、いまいちうまくできる方法がわかってないです。とりあえず、なんとかそれっぽいコードができたので。
下の画面の今日ボタンを押したときのロジックです。
{
unsigned unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit ;
unsigned unitFlags2 = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
// デートピッカーから取得した値
NSDate *date = _datePicker.date;
// 時分だけでNSDateComponentsを作成
NSDateComponents *comps = [[[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar] components:unitFlags fromDate:date];
{ // 作成したNSDateComponentsを今日の年月日にする
NSDate *today = [NSDate date];
NSDateComponents *tmp = [[[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar] components:unitFlags2 fromDate:today];
[comps setYear:tmp.year];
[comps setMonth:tmp.month];
[comps setDay:tmp.day];
}
NSCalendar *calendar= [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];
// NSDateComponentsからNSDateを作成
NSDate *toDate = [calendar dateFromComponents: comps];
// デートピッカーに設定
_datePicker.date = toDate;
}
: