Использование этой недели и выходных для проверки между 2 NSDates - PullRequest
2 голосов
/ 16 мая 2011

NSDate часть моего назначения требует, чтобы я отображал события в соответствии с категорией, которую выбирает пользователь. Категории - сегодня, в этом месяце, на этой неделе и в эти выходные. Я сделал и «сегодня», и «этот месяц», и у меня возникли проблемы с двумя другими. В основном у меня есть диапазон дат для каждого события (например, fromDate = 03-04-2011, toDate = 03-11-2011). То, что я хочу сделать, это проверить, находится ли эта неделя и эти выходные между диапазонами дат. Я погуглил источники, но не смог найти то, что мне нужно. Я понимаю, что должен использовать NSCalendar, но я не знаю, как это сделать.

Определение, содержит ли NSDate день выходных

^ Кажется, ответ - то, что я ищу, но я не знаю, как его использовать. Любая помощь по этому или любому другому решению будет принята с благодарностью. Спасибо

1 Ответ

3 голосов
/ 16 мая 2011
- (BOOL)checkForWeekend:(NSDate *)aDate {
  BOOL isWeekendDate = NO;
  NSCalendar *calendar = [NSCalendar currentCalendar];
  NSRange weekdayRange = [calendar maximumRangeOfUnit:NSWeekdayCalendarUnit];
  NSDateComponents *components = [calendar components:NSWeekdayCalendarUnit fromDate:aDate];
  NSUInteger weekdayOfDate = [components weekday];

  if (weekdayOfDate == weekdayRange.location || weekdayOfDate == weekdayRange.length) {
    // The date falls somewhere on the first or last days of the week.
    isWeekendDate = YES;
  }
  return isWeekendDate;
}

ИСПОЛЬЗОВАНИЕ:

BOOL isWeekend = [self checkForWeekend:[NSDate date]]; // Any date can be passed here.

if (isWeekend) {
  NSLog(@"Weekend date! Yay!");
}
...