有没有更简单的方法可以将一个 NSDate A 仅分配小时和分钟分配给 NSDate B,但保留 B 的年月和日



是否有任何更轻松的方法可以从一个NSDATE A到NSDATE B仅分配一个小时和分钟,但请保留B的YEAR和DAY?

我不知道这是一种更简单的方法,但这是正确的方法:

NSDate *dateA = [NSDate date];
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier: NSGregorianCalendar];
NSUInteger timeComps = (NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit | NSTimeZoneCalendarUnit);
NSDateComponents *comps = [gregorian components:timeComps fromDate:dateA];
[components setHour: 3];
[components setMinute: 42];
NSDate *newDateB = [gregorian dateFromComponents: components];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSCalendarUnit *dateComponent = (NSYearCalendarUnit| NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekCalendarUnit |  NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit | NSWeekdayCalendarUnit | NSWeekdayOrdinalCalendarUnit);
NSDateComponents *components1 = [calendar components:dateComponent fromDate:dateA];
NSInteger day = components1.day;
NSInteger month = components1.month;
NSInteger year = components1.year;
NSDateComponents *components2 = [calendar components:dateComponent fromDate:dateB];
NSInteger hour = components2.hour;
NSInteger minute = components2.minute;
NSInteger second = components2.second;
NSDateComponents *requiredComponent = [[NSDateComponents alloc] init];
requiredComponent.day = day;
requiredComponent.month = month;
requiredComponent.year = year;
requiredComponent.hour = hour;
requiredComponent.minute = minute;
requiredComponent.second = second;
NSDate *date = [calendar dateFromComponents:requiredComponent];

最新更新