我有两个首先从DatePicker获取的日期(self.datePicker.date
),另一个是手动设置的NSDate
(self.fireDate
)。
我想将self.datePicker.date
的时间添加到self.fireDate
。
我的逻辑是:I Follow this Question
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);
请给我关于这个问题的任何建议。
提前致谢 ;)
最佳答案
NSCalendar
的计算取决于日历的区域设置和时区。要获取正确的时间部分,您必须使用选择器的日历:
NSDateComponents *timeComponents = [self.datePicker.calendar components:(NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit ) fromDate:[self.datePicker date]];
dateComponents
和finalDate
可能应该根据用户在Settings.app中设置的当前日历来计算,该日历是从...NSCalendar *currentCalender = [NSCalendar currentCalendar];
另一个猜测:所发布代码的缩进表明您没有粘贴所有真实代码。也许您在一个封闭范围内设置了fireDate,但从外部范围打印了另一个?
关于iphone - 更改NSDate的时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19396887/