我有一个旧日期的NSDate对象,我从我的数据库中获取。现在我需要将我的UIDatePicker日期设置为当前日期,但是我从我的数据库中获取的存储的NSDate对象中包含小时和分钟值。
那么如何从旧日期中提取小时和分钟并将其设置为当前的UIDatePicker NSdate。
由于
答案 0 :(得分:3)
由于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];
答案 1 :(得分: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];