Вот ссылка на другой ответ Я написал на SO (бесстыдно, я знаю). Он имеет некоторый код, который может помочь вам с датами в будущем. Методы реализованы как категории NSDate, то есть они становятся методами NSDate.
Есть несколько функций, которые помогают с выходными. Но эти два могут быть наиболее полезными:
- (NSDate*) theFollowingWeekend;
- (NSDate *) thePreviousWeekend;
Они возвращают дату выходных после и до получателя (самостоятельно).
Как правило, вы не должны использовать понятие, что день составляет 86400 секунд, и должны использовать NSDateComponents и NSCalendar. Это работает, даже когда переходы на летнее время происходят между датами. Как это:
- (NSDate *) dateByAddingDays:(NSInteger) numberOfDays {
NSDateComponents *dayComponent = [[NSDateComponents alloc] init];
dayComponent.day = numberOfDays;
NSCalendar *theCalendar = [NSCalendar currentCalendar];
return [theCalendar dateByAddingComponents:dayComponent toDate:self options:0];
}