1

DB から取得している古い日付の NSDate オブジェクトがあります。UIDatePicker の日付を現在の日付に設定する必要がありますが、DB から取得した格納済みの NSDate オブジェクトの時間と分の値を使用します。

古い日付から時間と分を抽出し、現在の UIDatePicker NSdate に設定する方法。

ありがとう

4

2 に答える 2

4

NSDate は初期化後に変更できないため、再作成する必要があります。

NSDate の時間と分のコンポーネントを取得するには、NSCalendar を使用します。

NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *dateComponents = [gregorian components:(NSHourCalendarUnit  | NSMinuteCalendarUnit | NSSecondCalendarUnit) fromDate:yourOriginalDateHere];
NSInteger hour = [dateComponents hour];
NSInteger minute = [dateComponents minute];
NSInteger second = [dateComponents second];

次に、新しい NSDate を作成できます (これも NSCalendar を使用):

NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *dateComponents = [gregorian components:(NSYearCalendarUnit  | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:[NSDate date]]; //[NSDate date] is the current date
[dateComponents setHour:hour];
[dateComponents setMinute:minute];
[dateComponents setSecond:second];
NSDate *newDate = [gregorian dateFromComponents:dateComponents];
于 2012-07-31T12:28:27.467 に答える
2
 NSCalendar *cal = [NSCalendar autoupdatingCurrentCalendar];
 NSDateComponents *dbDateComps = [cal components:(kCFCalendarUnitHour | kCFCalendarUnitMinute) fromDate:YOUR_DATE_FRM_DB];
 NSDateComponents *currentComps = [cal components:(kCFCalendarUnitYear | kCFCalendarUnitMonth | kCFCalendarUnitDay) fromDate:[NSDate date]];
 [currentComps setHour:[dbDateComps hour]];
 [currentComps setMinute:[dbDateComps minute]];

 NSDate *resultDate = [currentComps date];
于 2012-07-31T12:32:58.420 に答える