Чтобы экстраполировать ответ Джастина, если вы хотите работать с неделями и днями недели, вы должны создать новый объект NSDateComponent
, который содержит weekday
и weekOfYear
элементы INSTEAD из day
и month
компонентов.,Вам может понадобиться новый временный объект для этого.
Вот код из моего проекта, который находит в следующую пятницу, но это аналогичная идея: (calGergorian
и dcNow
- свойства моего класса, но должныне требует пояснений)
_dcNextWeekReminderTime = [[NSDateComponents alloc] init];
_dcNextWeekReminderTime.weekday = 6;
_dcNextWeekReminderTime.weekOfYear = self.dcNow.weekOfYear;
_dcNextWeekReminderTime.year = self.dcNow.year;
_dcNextWeekReminderTime.calendar = self.calGregorian;
//if the date we've just created is earlier than today...
if ([[self.calGregorian dateFromComponents:_dcNextWeekReminderTime] timeIntervalSinceDate:[self.calGregorian dateFromComponents:self.dcNow]] < 0) {
//...make it next week
_dcNextWeekReminderTime.weekOfYear +=1;
}
(простите за мой венгерский язык)
Чтобы решить вашу проблему, вы в основном изменили бы >
на <
в операторе if, иизмените +=1
на -=1
и число 6 (пятница) на 2 (понедельник).
Кроме того, если вы не работаете со старой версией iOS, week
представляется устаревшим в пользуweekOfYear
.