1

我有两个日期首先从 DatePicker ( self.datePicker.date) 获取,另一个是手动设置的NSDate( self.fireDate)。

我想添加self.datePicker.date时间self.fireDate

我的逻辑是:我关注这个问题

NSCalendar *currentCalender = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    NSDateComponents *timeComponents = [currentCalender components:(NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit ) fromDate:[self.datePicker date]];
    NSDateComponents *dateComponents = [currentCalender components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate: self.fireDate];
    [dateComponents setHour:timeComponents.hour];
    [dateComponents setMinute:timeComponents.minute];
    [dateComponents setSecond:timeComponents.second];
    NSDate *finalDate = [currentCalender dateFromComponents:dateComponents];

NSLog(@"%@", [self.datePicker date]);
NSLog(@"%@", finalDate);
NSLog(@"%@", self.fireDate);

请就这个问题给我任何建议。

提前致谢 ;)

4

1 回答 1

4

计算NSCalendar确实取决于日历的区域设置和时区。要获得正确的时间组件,您必须使用选择器的日历:

NSDateComponents *timeComponents = [self.datePicker.calendar components:(NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit ) fromDate:[self.datePicker date]];

dateComponentsfinalDate可能应该根据用户在 Settings.app 中设置的当前日历计算,您可以从...

NSCalendar *currentCalender = [NSCalendar currentCalendar];

另一个疯狂的猜测:已发布代码的缩进表明您没有粘贴所有真实代码。也许您将 fireDate 设置在封闭范围内,但从外部范围打印另一个?

于 2013-10-16T06:53:33.287 回答