Я полагаю, что если вы добавите интервал времени, который испортит время перехода на летнее время.Добавление секунд за один день будет в итоге днем позже, но на час раньше или позже.Я почти уверен, что сталкивался с этим раньше, но вы можете проверить это легко, я думаю.
Другим способом было бы использование NSDateComponents:
// using while will be inefficient when the targetDate is more than a few days in the past
while ([targetDate compare:[NSDate date]] == NSOrderedAscending) {
NSCalendar *calendar = [NSCalendar currentCalendar];
NSInteger units = NSYearCalendarUnit |
NSMonthCalendarUnit |
NSDayCalendarUnit |
NSHourCalendarUnit |
NSMinuteCalendarUnit |
NSSecondCalendarUnit;
NSDateComponents *comps = [calendar components:units fromDate:targetDate];
[comps setDay:[comps day] + 1]; // if day is 32 for instance, it'll automatically roll over to the next month
NSDate *targetDate = [calendar dateFromComponents:comps];
}
Вышесказанное ни в коем случаеидеальное решение (например, оно утечет targetDate, если вы его сохранили), но в основном предназначено, чтобы показать вам, как добавить 1 день к NSDate, используя NSDateComponents.